Wouldn't it be better to remove the target selector and instead add:
/* { dg-require-effective-target pie } */
...
This allows the tests to be run on Darwin and fail because the code generated does not
match the scan-assembler:
FAIL: gcc.target/i386/iinline-attr-2.c scan-assembler p2align
FAIL: gcc.target/i386/pr32219-1.c scan-assembler movl[ \\t]xxx\\\\(%rip\\\\), %eax
FAIL: gcc.target/i386/pr32219-3.c scan-assembler movl[ \\t]xxx\\\\(%rip\\\\), %eax
FAIL: gcc.target/i386/pr32219-3.c scan-assembler-not xxx@GOTPCREL
FAIL: gcc.target/i386/pr32219-5.c scan-assembler movl[ \\t]xxx\\\\(%rip\\\\), %eax
FAIL: gcc.target/i386/pr32219-6.c scan-assembler xxx@GOTPCREL
FAIL: gcc.target/i386/pr32219-7.c scan-assembler movl[ \\t]xxx\\\\(%rip\\\\), %eax
FAIL: gcc.target/i386/pr32219-7.c scan-assembler-not xxx@GOTPCREL
FAIL: gcc.target/i386/pr39013-1.c scan-assembler bar@PLT
FAIL: gcc.target/i386/pr39013-1.c scan-assembler foo@PLT
FAIL: gcc.target/i386/pr39013-2.c scan-assembler bar@PLT
FAIL: gcc.target/i386/pr39013-2.c scan-assembler foo@PLT
I suspect that this will also be the case for gcc.target/i386/pr64317.c.