diff options
author | Kaz Kojima <kkojima@gcc.gnu.org> | 2015-07-01 01:02:48 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@gcc.gnu.org> | 2015-07-01 01:02:48 +0000 |
commit | 5be6d9e45fe62addd10ca7950f594f8aeef3f07b (patch) | |
tree | 4bc0606c2b1bc5db3e9d2d2b3b7ca895b05de75e /gcc/config | |
parent | 9127ce984db24ae06e9fe58c78256b7dc4d8cfa8 (diff) | |
download | gcc-5be6d9e45fe62addd10ca7950f594f8aeef3f07b.zip gcc-5be6d9e45fe62addd10ca7950f594f8aeef3f07b.tar.gz gcc-5be6d9e45fe62addd10ca7950f594f8aeef3f07b.tar.bz2 |
re PR target/64833 ([SH]: Error: pcrel too far when compiling imagemagick and graphicsmagick on Debian sh4)
PR target/64833
* [SH] Set length of casesi_worker_1 insn to 8 when flag_pic is set.
From-SVN: r225219
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/sh/sh.md | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 35113c0..5c8d306 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -11344,6 +11344,8 @@ label: LABEL_NUSES (operands[2])++; }) +;; This may be replaced with casesi_worker_2 in sh_reorg for PIC. +;; The insn length is set to 8 for that case. (define_insn "casesi_worker_1" [(set (match_operand:SI 0 "register_operand" "=r,r") (unspec:SI [(reg:SI R0_REG) @@ -11375,7 +11377,9 @@ label: gcc_unreachable (); } } - [(set_attr "length" "4")]) + [(set_attr_alternative "length" + [(if_then_else (match_test "flag_pic") (const_int 8) (const_int 4)) + (if_then_else (match_test "flag_pic") (const_int 8) (const_int 4))])]) (define_insn "casesi_worker_2" [(set (match_operand:SI 0 "register_operand" "=r,r") |