111
|
1 /* PR tree-optimization/58791 */
|
|
2 /* { dg-do run } */
|
|
3 /* { dg-options "-g" } */
|
|
4
|
|
5 #include "../nop.h"
|
|
6
|
|
7 __attribute__((noinline, noclone)) unsigned int
|
|
8 foo (unsigned int a0, unsigned int a1, unsigned int a2,
|
|
9 unsigned int a3, unsigned int a4)
|
|
10 {
|
|
11 unsigned int b0, b1, b2, b3, b4, e;
|
|
12 /* this can be optimized to four additions... */
|
|
13 b4 = a4 + a3 + a2 + a1 + a0; /* { dg-final { gdb-test pr58791-5.c:20 "b4" "4681" } } */
|
|
14 b3 = a3 + a2 + a1 + a0; /* { dg-final { gdb-test pr58791-5.c:20 "b3" "585" } } */
|
|
15 b2 = a2 + a1 + a0; /* { dg-final { gdb-test pr58791-5.c:20 "b2" "73" } } */
|
|
16 b1 = a1 + a0; /* { dg-final { gdb-test pr58791-5.c:20 "b1" "9" } } */
|
|
17 /* This is actually 0 */
|
|
18 e = b4 - b3 + b2 - b1 - a4 - a2; /* { dg-final { gdb-test pr58791-5.c:20 "e" "0" } } */
|
|
19 asm volatile (NOP : : : "memory");
|
|
20 asm volatile (NOP : : : "memory");
|
|
21 return e;
|
|
22 }
|
|
23
|
|
24 int
|
|
25 main ()
|
|
26 {
|
|
27 foo (1, 8, 64, 512, 4096);
|
|
28 return 0;
|
|
29 }
|