aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2020-09-09 10:29:47 -0700
committerH.J. Lu <hjl.tools@gmail.com>2020-09-09 10:42:27 -0700
commitbf69edf8ce47ca618eff30df2308279a40b22096 (patch)
tree0310ee372fb7395b9c8aca04d7fccc6f6ae21c31 /gcc
parentc6632dc9a8ee77ad66a8d62d736a9112de9e41c7 (diff)
downloadgcc-bf69edf8ce47ca618eff30df2308279a40b22096.zip
gcc-bf69edf8ce47ca618eff30df2308279a40b22096.tar.gz
gcc-bf69edf8ce47ca618eff30df2308279a40b22096.tar.bz2
x32: Update gcc.target/i386/builtin_thread_pointer.c
Update gcc.target/i386/builtin_thread_pointer.c for x32. For int foo3 (int i) { int* p = (int*) __builtin_thread_pointer (); return p[i]; } we can't generate: movl %fs:0(,%edi,4), %eax ret for x32 since the address of %fs:0(,%edi,4) is %fs + zero-extended to 64 bits of 0(,%edi,4). Instead, we generate: movl %fs:0, %eax movl (%eax,%edi,4), %eax PR target/96955 * gcc.target/i386/builtin_thread_pointer.c: Update scan-assembler for x32.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gcc.target/i386/builtin_thread_pointer.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.target/i386/builtin_thread_pointer.c b/gcc/testsuite/gcc.target/i386/builtin_thread_pointer.c
index dce3148..16a7ca4 100644
--- a/gcc/testsuite/gcc.target/i386/builtin_thread_pointer.c
+++ b/gcc/testsuite/gcc.target/i386/builtin_thread_pointer.c
@@ -25,4 +25,6 @@ foo3 (int i)
return p[i];
}
-/* { dg-final { scan-assembler "movl\[ \t\]*%\[fg\]s:0\\(,%\[a-z0-9\]*,4\\), %eax" } } */
+/* { dg-final { scan-assembler "movl\[ \t\]*%\[fg\]s:0\\(,%\[a-z0-9\]*,4\\), %eax" { target { ! x32 } } } } */
+/* { dg-final { scan-assembler-not "movl\[ \t\]*%fs:0\\(,%\[a-z0-9\]*,4\\), %eax" { target x32 } } } */
+/* { dg-final { scan-assembler "movl\[ \t\]*\\(%eax,%edi,4\\), %eax" { target x32 } } } */