File: phi_on_compare-1.c

package info (click to toggle)
gcc-arm-none-eabi 15%3A14.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,099,328 kB
  • sloc: cpp: 3,627,108; ansic: 2,571,498; ada: 834,230; f90: 235,082; makefile: 79,231; asm: 74,984; xml: 51,692; exp: 39,736; sh: 33,298; objc: 15,629; python: 15,069; fortran: 14,429; pascal: 7,003; awk: 5,070; perl: 3,106; ml: 285; lisp: 253; lex: 204; haskell: 135
file content (36 lines) | stat: -rw-r--r-- 862 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/* { dg-do compile } */
/* { dg-options "-Ofast -fdump-tree-dom2 -fdump-tree-optimized-details-blocks" } */

void g (int);
void g1 (int);

void
f (long a, long b, long c, long d, long x)
{
  _Bool t;
  if (x)
    {
      g (a + 1);
      t = a < b;
      c = d + x;
    }
  else
    {
      g (b + 1);
      a = c + d;
      t = c > d;
    }

  if (t)
    g1 (c);

  g (a);
}

/* This is actually a regression.  The backward threader cannot thread
   the above scenario, but it is being caught by the DOM threader
   which still uses the forward threader.  We should implement this
   optimization in the backward threader before killing the forward
   threader.  Similarly for the other phi_on_compare-*.c tests.  */
/* { dg-final { scan-tree-dump-times "Removing basic block" 1 "dom2" } } */
/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */