This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Ping : [PATCH] [gcc, combine] PR46164: Don't combine the insns if a volatile register is contained.

On Sun, Feb 15, 2015 at 7:35 PM, Segher Boessenkool
<> 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?


Attachment: pr64818-combine-user-specified-register.patch-4
Description: Binary data

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]