diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2013-04-03 15:37:31 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2013-04-03 15:37:31 +0000 |
commit | 4a32ef809ace73d7fb581e97e154b325f36ab0b9 (patch) | |
tree | 23e754d2ad636430a20854d5e37ca4f967523982 /gcc | |
parent | 7349ed0585442aa54457ebdfc8c24b94080da2df (diff) | |
download | gcc-4a32ef809ace73d7fb581e97e154b325f36ab0b9.zip gcc-4a32ef809ace73d7fb581e97e154b325f36ab0b9.tar.gz gcc-4a32ef809ace73d7fb581e97e154b325f36ab0b9.tar.bz2 |
re PR target/56809 (Revision 197266 causes trunk ICE for arm-none-eabi targets)
gcc/
2013-04-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/56809
* config/arm/arm.c (is_jump_table): Use next_active_insn instead of
next_real_insn.
(thumb1_output_casesi): Likewise.
(thumb2_output_casesi): Likewise.
gcc/testsuite
2013-04-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/56809
* gcc.dg/pr56809.c: New testcase.
From-SVN: r197425
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr56809.c | 32 |
4 files changed, 49 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f6b00ca..9ce142c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-04-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + PR target/56809 + * config/arm/arm.c (is_jump_table): Use next_active_insn instead of + next_real_insn. + (thumb1_output_casesi): Likewise. + (thumb2_output_casesi): Likewise. + 2013-04-03 Richard Biener <rguenther@suse.de> PR tree-optimization/56817 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index fe6902f..f5676e0 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -12821,8 +12821,8 @@ is_jump_table (rtx insn) rtx table; if (jump_to_label_p (insn) - && ((table = next_real_insn (JUMP_LABEL (insn))) - == next_real_insn (insn)) + && ((table = next_active_insn (JUMP_LABEL (insn))) + == next_active_insn (insn)) && table != NULL && JUMP_TABLE_DATA_P (table)) return table; @@ -25802,7 +25802,7 @@ arm_output_iwmmxt_tinsr (rtx *operands) const char * thumb1_output_casesi (rtx *operands) { - rtx diff_vec = PATTERN (next_real_insn (operands[0])); + rtx diff_vec = PATTERN (next_active_insn (operands[0])); gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC); @@ -25825,7 +25825,7 @@ thumb1_output_casesi (rtx *operands) const char * thumb2_output_casesi (rtx *operands) { - rtx diff_vec = PATTERN (next_real_insn (operands[2])); + rtx diff_vec = PATTERN (next_active_insn (operands[2])); gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7e16812..5e64fa6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-04-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + PR target/56809 + * gcc.dg/pr56809.c: New testcase. + 2013-04-03 Jakub Jelinek <jakub@redhat.com> PR debug/56819 diff --git a/gcc/testsuite/gcc.dg/pr56809.c b/gcc/testsuite/gcc.dg/pr56809.c new file mode 100644 index 0000000..3f1f311 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr56809.c @@ -0,0 +1,32 @@ +/* PR target/56809 */ +/* { dg-do compile } */ +/* { dg-options "-Os" } */ + +int +foo (int mode, int i) +{ + int x; + + switch (mode) + { + case 0: + x = i + 1; + break; + case 1: + x = i / 2; + break; + case 2: + x = i * 3; + break; + case 3: + x = i + 3; + break; + case 4: + x = i + 5; + break; + default: + x = i - 1; + } + + return x; +} |