annotate gcc/testsuite/gcc.dg/tree-ssa/pr43491.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do compile } */
kono
parents:
diff changeset
2 /* { dg-options "-O2 -fdump-tree-optimized" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 #define REGISTER register
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 #if defined __arm__
kono
parents:
diff changeset
7 # define REG1 asm("r4")
kono
parents:
diff changeset
8 #elif defined __i386__
kono
parents:
diff changeset
9 # define REG1 asm("ebx")
kono
parents:
diff changeset
10 #elif defined __mips__
kono
parents:
diff changeset
11 # define REG1 asm("s0")
kono
parents:
diff changeset
12 #elif defined __x86_64__
kono
parents:
diff changeset
13 # define REG1 asm("rbp")
kono
parents:
diff changeset
14 #else
kono
parents:
diff changeset
15 # undef REGISTER
kono
parents:
diff changeset
16 # define REGISTER
kono
parents:
diff changeset
17 # define REG1
kono
parents:
diff changeset
18 #endif
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 REGISTER long data_0 REG1;
kono
parents:
diff changeset
21 long data_3;
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 long foo(long data, long v)
kono
parents:
diff changeset
24 {
kono
parents:
diff changeset
25 long i;
kono
parents:
diff changeset
26 long t, u;
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 if (data)
kono
parents:
diff changeset
29 i = data_0 + data_3;
kono
parents:
diff changeset
30 else {
kono
parents:
diff changeset
31 v = 2;
kono
parents:
diff changeset
32 i = 5;
kono
parents:
diff changeset
33 }
kono
parents:
diff changeset
34 t = data_0 + data_3;
kono
parents:
diff changeset
35 u = i;
kono
parents:
diff changeset
36 return v * t * u;
kono
parents:
diff changeset
37 }
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 /* We should not eliminate global register variable when it is the RHS of
kono
parents:
diff changeset
40 a single assignment. So the number of loads from data_0 has to match
kono
parents:
diff changeset
41 that of the number of adds (we hoist data_0 + data_3 above the
kono
parents:
diff changeset
42 if (data) and eliminate the useless copy). */
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 /* { dg-final { scan-tree-dump-times "= data_0;" 1 "optimized" { target { arm*-*-* i?86-*-* mips*-*-* x86_64-*-* } } } } */
kono
parents:
diff changeset
45 /* { dg-final { scan-tree-dump-times " \\+ " 1 "optimized" { target { ! { arm*-*-* i?86-*-* mips*-*-* x86_64-*-* } } } } } */