rL341389 broke code with tied register operands in inline assembly. For
example, asm("" : "=r"(var) : "0"(var));
The code above specifies the input operand to be in the same register
with the output operand, tying the two register. This patch makes this
kind of code work again. Without this, this assertion fails.
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
- Build Status
Buildable 22557 Build 22557: arc lint + arc unit
Event Timeline
Comment Actions
I don't know this code myself, but if I'm right in assuming this fixes the current waterfall failures then please commit and we can followup is others have comments.
Comment Actions
@dschuff Re: about your question asked in person:
If a reg operand gets tied to another operand in instruction selection, they become the same register in here in TwoAddressInstructionPass. So they are assigned to a same local in this ExplicitLocal pass, so we don't need to worry two tied operands ending up in different locals.