diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-11-01 09:48:05 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2007-11-01 09:48:05 +0100 |
commit | d0a55efc8463a68632498a84cffa7b84fe3d6e26 (patch) | |
tree | 45f7a53520410f93df610fbb1e6060c29abf1bae /gcc/testsuite/gcc.dg/pr33673.c | |
parent | 895a8136438717d4770e58be58ffa8bb71df4c28 (diff) | |
download | gcc-d0a55efc8463a68632498a84cffa7b84fe3d6e26.zip gcc-d0a55efc8463a68632498a84cffa7b84fe3d6e26.tar.gz gcc-d0a55efc8463a68632498a84cffa7b84fe3d6e26.tar.bz2 |
re PR rtl-optimization/33673 (ICE in verify_flow_info, missing barrier, when multiple tree opts disabled)
PR rtl-optimization/33673
* gcse.c (cprop_jump): If a conditional jump has been optimized
into unconditional jump, make the remaining normal edge fallthru
and delete the jump insn.
* gcc.dg/pr33673.c: New test.
From-SVN: r129819
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr33673.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/pr33673.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr33673.c b/gcc/testsuite/gcc.dg/pr33673.c new file mode 100644 index 0000000..d238d11 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr33673.c @@ -0,0 +1,43 @@ +/* PR rtl-optimization/33673 */ +/* { dg-do compile } */ +/* { dg-options "-Os -fno-forward-propagate -fno-guess-branch-probability -fno-move-loop-invariants -fno-tree-dominator-opts -fno-tree-loop-optimize" } */ + +extern int f1 (int); +extern int f2 (int); + +extern int *a; + +static void +find_reg (int n) +{ + int i, pass; + unsigned int used[2], used1[2]; + + int c = n ? f1 (a[1]) : f2 (a[1]); + + for (i = 64, pass = 0; pass <= 1 && i >= 64; pass++) + { + if (pass == 1) + { + unsigned int *scan_tp_ = used; + unsigned int *scan_fp_ = used1; + int j; + for (j = 0; j < 2; j++) + *scan_tp_++ = *scan_fp_++; + } + for (i = 0; i < 64; i++) + { + int regno = i; + if (n == 0) + if (i == regno) + break; + } + } +} + +void +global_alloc () +{ + find_reg (0); + find_reg (1); +} |