aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2013-04-03 15:37:31 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2013-04-03 15:37:31 +0000
commit4a32ef809ace73d7fb581e97e154b325f36ab0b9 (patch)
tree23e754d2ad636430a20854d5e37ca4f967523982 /gcc
parent7349ed0585442aa54457ebdfc8c24b94080da2df (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/config/arm/arm.c8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr56809.c32
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;
+}