Ping : [PATCH] [gcc, combine] PR46164: Don't combine the insns if a volatile register is contained.
Terry Guo
flameroc@gmail.com
Tue Feb 17 03:39:00 GMT 2015
On Sun, Feb 15, 2015 at 7:35 PM, Segher Boessenkool
<segher@kernel.crashing.org> wrote:
> Hi Terry,
>
> I still think this is stage1 material.
>
>> + /* Don't combine if dest contains a user specified register and i3 contains
>> + ASM_OPERANDS, because the user specified register (same with dest) in i3
>> + would be replaced by the src of insn which might be different with
>> + the user's expectation. */
>
> "Do not eliminate a register asm in an asm input" or similar? Text
> explaining why REG_USERVAR_P && HARD_REGISTER_P works here would be
> good to have, too.
>
>> + if (REG_P (dest) && REG_USERVAR_P (dest) && HARD_REGISTER_P (dest)
>> + && (GET_CODE (PATTERN (i3)) == SET
>> + && GET_CODE (SET_SRC (PATTERN (i3))) == ASM_OPERANDS))
>> + return 0;
>
> That works only for asms with exactly one output. You want
> extract_asm_operands.
>
>
> Segher
Thanks Segher. Patch is updated per you suggestion. Is this one ok for stage 1?
BR,
Terry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pr64818-combine-user-specified-register.patch-4
Type: application/octet-stream
Size: 1915 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150217/37415cf2/attachment.obj>
More information about the Gcc-patches
mailing list