annotate gcc/testsuite/gcc.dg/pr35045.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do run } */
kono
parents:
diff changeset
2 /* { dg-skip-if "" { { i?86-*-* x86_64-*-* } && { ia32 && { ! nonpic } } } } */
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 111
diff changeset
3 /* { dg-skip-if "Not enough registers" { "pdp11-*-*" } } */
111
kono
parents:
diff changeset
4 /* { dg-options "-O2 -fgcse-after-reload" } */
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 extern void abort (void);
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 __attribute__((noinline)) __complex__ float
kono
parents:
diff changeset
9 give_neg1 (void)
kono
parents:
diff changeset
10 {
kono
parents:
diff changeset
11 __complex__ float res;
kono
parents:
diff changeset
12 __real__ res = -1.0;
kono
parents:
diff changeset
13 __imag__ res = 1.0;
kono
parents:
diff changeset
14 return res;
kono
parents:
diff changeset
15 }
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 __attribute__((noinline)) __complex__ float
kono
parents:
diff changeset
18 mycacoshf (__complex__ float x)
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 __complex__ float res;
kono
parents:
diff changeset
21 res = give_neg1 ();
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 /* We have to use the positive branch. */
kono
parents:
diff changeset
24 if (__real__ res < 0.0)
kono
parents:
diff changeset
25 {
kono
parents:
diff changeset
26 unsigned a,b,c,d,e,f;
kono
parents:
diff changeset
27 res = -res;
kono
parents:
diff changeset
28 asm __volatile__ ("" : "=r" (a), "=r" (b), "=r" (c), "=r" (d), "=r" (e), "=r" (f));
kono
parents:
diff changeset
29 }
kono
parents:
diff changeset
30 return res;
kono
parents:
diff changeset
31 }
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 int main()
kono
parents:
diff changeset
34 {
kono
parents:
diff changeset
35 __complex__ float res = mycacoshf(1.0);
kono
parents:
diff changeset
36 if (__imag__ res >= 0.0)
kono
parents:
diff changeset
37 abort();
kono
parents:
diff changeset
38 return 0;
kono
parents:
diff changeset
39 }