diff options
author | Jeff Law <law@gcc.gnu.org> | 2015-02-05 10:04:04 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2015-02-05 10:04:04 -0700 |
commit | b291a2021d9d8ccce1d50771cac9672c58ead0f6 (patch) | |
tree | 80f9b2809975f2b7adb91e28e0021f0d45343b7b /gcc/config/h8300 | |
parent | 29e1d31b2cf2720fad010f1079b679c5edfb206f (diff) | |
download | gcc-b291a2021d9d8ccce1d50771cac9672c58ead0f6.zip gcc-b291a2021d9d8ccce1d50771cac9672c58ead0f6.tar.gz gcc-b291a2021d9d8ccce1d50771cac9672c58ead0f6.tar.bz2 |
re PR target/58400 (gcc for h8300 internal compiler error: insn does not satisfy its constraints at fs/ext4/mballoc.c: In function 'mb_free_blocks':)
* config/h8300/constraints.md ("U" constraint): Use strict
variant of REG_OK_FOR_BASE_P after reload has started.
PR target/58400
gcc.target/h8300/pr58400.c: New test.
From-SVN: r220457
Diffstat (limited to 'gcc/config/h8300')
-rw-r--r-- | gcc/config/h8300/constraints.md | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/h8300/constraints.md b/gcc/config/h8300/constraints.md index 1d2ad5f..15bfedb 100644 --- a/gcc/config/h8300/constraints.md +++ b/gcc/config/h8300/constraints.md @@ -171,10 +171,14 @@ (define_constraint "U" "An operand valid for a bset destination." (ior (and (match_code "reg") - (match_test "REG_OK_FOR_BASE_P (op)")) + (match_test "(reload_in_progress || reload_completed) + ? REG_OK_FOR_BASE_STRICT_P (op) + : REG_OK_FOR_BASE_P (op)")) (and (match_code "mem") (match_code "reg" "0") - (match_test "REG_OK_FOR_BASE_P (XEXP (op, 0))")) + (match_test "(reload_in_progress || reload_completed) + ? REG_OK_FOR_BASE_STRICT_P (XEXP (op, 0)) + : REG_OK_FOR_BASE_P (XEXP (op, 0))")) (and (match_code "mem") (match_code "symbol_ref" "0") (match_test "TARGET_H8300S")) |