diff options
author | Jeff Law <law@redhat.com> | 2014-02-07 15:35:49 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2014-02-07 15:35:49 -0700 |
commit | 63e6247dfe1fb16b2c179d1b1e04b7ca0efb506d (patch) | |
tree | ab3e633f7ef262d6a3a2e22f5f722d5abe0caaaf /gcc | |
parent | b581c05cd9f25891505720ec8a41bfab5d13eb43 (diff) | |
download | gcc-63e6247dfe1fb16b2c179d1b1e04b7ca0efb506d.zip gcc-63e6247dfe1fb16b2c179d1b1e04b7ca0efb506d.tar.gz gcc-63e6247dfe1fb16b2c179d1b1e04b7ca0efb506d.tar.bz2 |
re PR target/40977 (problem with code like this: res = ((uint64_t)resh << 32) | resl;)
PR target/40977
* config/m68k/m68k.md (ashldi_extsi): Turn into a
define_insn_and_split.
From-SVN: r207615
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.md | 19 |
2 files changed, 10 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ce9c066..1237904 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2014-02-07 Jeff Law <law@redhat.com> + PR target/40977 + * config/m68k/m68k.md (ashldi_extsi): Turn into a + define_insn_and_split. + * ipa-inline.c (inline_small_functions): Fix typos. 2014-02-07 Richard Sandiford <rsandifo@linux.vnet.ibm.com> diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 7bf9abd..e61048b 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -4338,25 +4338,18 @@ ;; arithmetic shift instructions ;; We don't need the shift memory by 1 bit instruction - -(define_insn "ashldi_extsi" +(define_insn_and_split "ashldi_extsi" [(set (match_operand:DI 0 "nonimmediate_operand" "=ro") (ashift:DI (match_operator:DI 2 "extend_operator" [(match_operand:SI 1 "general_operand" "rm")]) (const_int 32)))] "" -{ - CC_STATUS_INIT; - if (GET_CODE (operands[0]) == REG) - operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); - else - operands[2] = adjust_address (operands[0], SImode, 4); - if (ADDRESS_REG_P (operands[0])) - return "move%.l %1,%0\;sub%.l %2,%2"; - else - return "move%.l %1,%0\;clr%.l %2"; -}) + "#" + "&& reload_completed" + [(set (match_dup 3) (match_dup 1)) + (set (match_dup 2) (const_int 0))] + "split_di(operands, 1, operands + 2, operands + 3);") (define_insn "ashldi_sexthi" [(set (match_operand:DI 0 "nonimmediate_operand" "=m,a*d") |