diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2017-01-17 16:11:55 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2017-01-17 16:11:55 +0000 |
commit | 31b61548d62e7982630d63c7912db2ed3faf5321 (patch) | |
tree | 0e86084fee69421a3044c3164bd62aa363026cd4 /gcc | |
parent | c549996eed68bbe0da8bebc900503e99a2fb7b52 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ira-conflicts.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr79058.c | 12 |
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); +} |