From: Vladimir Makarov Date: Tue, 17 Jan 2017 16:11:55 +0000 (+0000) Subject: re PR target/79058 (ARM: internal compiler error: in extract_constrain_insn, at recog... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=31b61548d62e7982630d63c7912db2ed3faf5321;p=gcc.git re PR target/79058 (ARM: internal compiler error: in extract_constrain_insn, at recog.c:2213) 2017-01-17 Vladimir Makarov PR target/79058 * ira-conflicts.c (ira_build_conflicts): Update total conflict hard regs for inner regno. 2017-01-17 Vladimir Makarov PR target/79058 * gcc.target/arm/pr79058.c: New. From-SVN: r244535 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 282d1c90d59..cc05d2c9c2c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-01-17 Vladimir Makarov + + PR target/79058 + * ira-conflicts.c (ira_build_conflicts): Update total conflict + hard regs for inner regno. + 2017-01-17 Martin Liska PR ipa/71207 diff --git a/gcc/ira-conflicts.c b/gcc/ira-conflicts.c index 1a8c08caaa4..57dba151d8d 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 e211eb8c319..0eda15b930b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-01-17 Vladimir Makarov + + PR target/79058 + * gcc.target/arm/pr79058.c: New. + 2017-01-17 Jakub Jelinek 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 00000000000..f2841f514df --- /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); +}