1 /* PR middle-end/38533 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 --param tree-reassoc-width=1 -fdump-tree-reassoc1" } */
4
5 #define A asm volatile ("" : "=r" (f) : "0" (0)); e |= f;
6 #define B A A A A A A A A A A A
7 #define C B B B B B B B B B B B
8
9 int
foo(void)10 foo (void)
11 {
12 int e = 0, f;
13 C C B B B B B A A A A A A
14 return e;
15 }
16
17 int
main(void)18 main (void)
19 {
20 if (foo ())
21 __builtin_abort ();
22 return 0;
23 }
24
25 /* Verify that reassoc hasn't increased register pressure too much
26 by moving all bitwise ors after the last __asm__. There should
27 be exactly 2 (first) __asm__ stmts with no intervening stmts,
28 all others should have some bitwise or in between. */
29 /* { dg-final { scan-tree-dump-times "__asm__\[^;\n]*;\n *__asm__" 1 "reassoc1"} } */
30