aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2017-01-17 16:11:55 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2017-01-17 16:11:55 +0000
commit31b61548d62e7982630d63c7912db2ed3faf5321 (patch)
tree0e86084fee69421a3044c3164bd62aa363026cd4 /gcc
parentc549996eed68bbe0da8bebc900503e99a2fb7b52 (diff)
downloadgcc-31b61548d62e7982630d63c7912db2ed3faf5321.zip
gcc-31b61548d62e7982630d63c7912db2ed3faf5321.tar.gz
gcc-31b61548d62e7982630d63c7912db2ed3faf5321.tar.bz2
re PR target/79058 (ARM: internal compiler error: in extract_constrain_insn, at recog.c:2213)
2017-01-17 Vladimir Makarov <vmakarov@redhat.com> PR target/79058 * ira-conflicts.c (ira_build_conflicts): Update total conflict hard regs for inner regno. 2017-01-17 Vladimir Makarov <vmakarov@redhat.com> PR target/79058 * gcc.target/arm/pr79058.c: New. From-SVN: r244535
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ira-conflicts.c8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/arm/pr79058.c12
4 files changed, 29 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 282d1c9..cc05d2c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-01-17 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/79058
+ * ira-conflicts.c (ira_build_conflicts): Update total conflict
+ hard regs for inner regno.
+
2017-01-17 Martin Liska <mliska@suse.cz>
PR ipa/71207
diff --git a/gcc/ira-conflicts.c b/gcc/ira-conflicts.c
index 1a8c08c..57dba15 100644
--- a/gcc/ira-conflicts.c
+++ b/gcc/ira-conflicts.c
@@ -787,8 +787,12 @@ ira_build_conflicts (void)
if (outer_regno < 0
|| !in_hard_reg_set_p (reg_class_contents[aclass],
outer_mode, outer_regno))
- SET_HARD_REG_BIT (OBJECT_CONFLICT_HARD_REGS (obj),
- inner_regno);
+ {
+ SET_HARD_REG_BIT (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj),
+ inner_regno);
+ SET_HARD_REG_BIT (OBJECT_CONFLICT_HARD_REGS (obj),
+ inner_regno);
+ }
}
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e211eb8..0eda15b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-01-17 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/79058
+ * gcc.target/arm/pr79058.c: New.
+
2017-01-17 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/71854
diff --git a/gcc/testsuite/gcc.target/arm/pr79058.c b/gcc/testsuite/gcc.target/arm/pr79058.c
new file mode 100644
index 0000000..f2841f5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr79058.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-skip-if "do not override -mcpu" { *-*-* } { "-mcpu=*" } { "-mcpu=arm7tdmi" } } */
+/* { dg-options "-Os -mbig-endian -mcpu=arm7tdmi" } */
+
+enum { NILFS_SEGMENT_USAGE_ACTIVE, NILFS_SEGMENT_USAGE_DIRTY } a;
+
+void fn2 (long long);
+
+void fn1() {
+ int b = a & 1 << NILFS_SEGMENT_USAGE_DIRTY;
+ fn2 (b ? (long long) -1 : 0);
+}