Viewing file: ssa-thread-invalid.c (1.46 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// { dg-do compile } // { dg-options "-O2 -fgimple -fdump-statistics" } // // This is a collection of seemingly threadble paths that should not be allowed.
void foobar (int);
// Possible thread from 2->4->3, but it would rotate the loop. void __GIMPLE (ssa) f1 () { int i;
// Pre-header. __BB(2): goto __BB4;
// Latch. __BB(3): foobar (i_1); i_5 = i_1 + 1; goto __BB4;
__BB(4,loop_header(1)): i_1 = __PHI (__BB2: 0, __BB3: i_5); if (i_1 != 101) goto __BB3; else goto __BB5;
__BB(5): return;
}
// Possible thread from 2->3->5 but threading through the empty latch // would create a non-empty latch. void __GIMPLE (ssa) f2 () { int i;
// Pre-header. __BB(2): goto __BB3;
__BB(3,loop_header(1)): i_8 = __PHI (__BB5: i_5, __BB2: 0); foobar (i_8); i_5 = i_8 + 1; if (i_5 != 256) goto __BB5; else goto __BB4;
// Latch. __BB(5): goto __BB3;
__BB(4): return;
}
// Possible thread from 3->5->6->3 but this would thread through the // header but not exit the loop. int __GIMPLE (ssa) f3 (int a) { int i;
__BB(2): goto __BB6;
__BB(3): if (i_1 != 0) goto __BB4; else goto __BB5;
__BB(4): foobar (5); goto __BB5;
// Latch. __BB(5): i_7 = i_1 + 1; goto __BB6;
__BB(6,loop_header(1)): i_1 = __PHI (__BB2: 1, __BB5: i_7); if (i_1 <= 99) goto __BB3; else goto __BB7;
__BB(7): return;
}
// { dg-final { scan-tree-dump-not "Jumps threaded" "statistics" } }
|