[llvm-commits] [llvm] r167040 - in /llvm/trunk: include/llvm/CodeGen/MachineInstr.h include/llvm/InlineAsm.h lib/CodeGen/MachineVerifier.cpp lib/CodeGen/ScheduleDAGInstrs.cpp lib/CodeGen/SelectionDAG/InstrEmitter.cpp lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
Chad Rosier
mcrosier at apple.com
Tue Oct 30 13:40:29 PDT 2012
On Oct 30, 2012, at 1:12 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
>
> On Oct 30, 2012, at 12:11 PM, Chad Rosier <mcrosier at apple.com> wrote:
>
>> Author: mcrosier
>> Date: Tue Oct 30 14:11:54 2012
>> New Revision: 167040
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=167040&view=rev
>> Log:
>> [inline asm] Implement mayLoad and mayStore for inline assembly. In general,
>> the MachineInstr MayLoad/MayLoad flags are based on the tablegen implementation.
>> For inline assembly, however, we need to compute these based on the constraints.
>>
>> Revert r166929 as this is no longer needed, but leave the test case in place.
>> rdar://12033048 and PR13504
>>
>> Modified:
>> llvm/trunk/include/llvm/CodeGen/MachineInstr.h
>> llvm/trunk/include/llvm/InlineAsm.h
>> llvm/trunk/lib/CodeGen/MachineVerifier.cpp
>> llvm/trunk/lib/CodeGen/ScheduleDAGInstrs.cpp
>> llvm/trunk/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
>> llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
>>
>> Modified: llvm/trunk/include/llvm/CodeGen/MachineInstr.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineInstr.h?rev=167040&r1=167039&r2=167040&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/CodeGen/MachineInstr.h (original)
>> +++ llvm/trunk/include/llvm/CodeGen/MachineInstr.h Tue Oct 30 14:11:54 2012
>> @@ -58,8 +58,10 @@
>> NoFlags = 0,
>> FrameSetup = 1 << 0, // Instruction is used as a part of
>> // function frame setup code.
>> - InsideBundle = 1 << 1 // Instruction is inside a bundle (not
>> + InsideBundle = 1 << 1, // Instruction is inside a bundle (not
>> // the first MI in a bundle)
>> + MayLoad = 1 << 2, // Instruction could possibly read memory.
>> + MayStore = 1 << 3 // Instruction could possibly modify memory.
>> };
>
> Hi Chad,
>
> Are there other instructions than inline asm that need dynamic mayLoad/mayStore flags?
Not that I'm aware of.
>
> If not, it seems you can just as easily get your flags from the INLINEASM flag operand (ExtraInfo):
Committed revision 167050. Thanks for the suggestion, Jakob.
Chad
> --- llvm/trunk/lib/CodeGen/SelectionDAG/InstrEmitter.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/InstrEmitter.cpp Tue Oct 30 14:11:54 2012
> @@ -903,6 +903,13 @@
> getZExtValue();
> MI->addOperand(MachineOperand::CreateImm(ExtraInfo));
>
> + // Set the MayLoad and MayStore flags.
> + if (ExtraInfo & InlineAsm::Extra_MayLoad)
> + MI->setFlag(MachineInstr::MayLoad);
> +
> + if (ExtraInfo & InlineAsm::Extra_MayStore)
> + MI->setFlag(MachineInstr::MayStore);
> +
> // Remember to operand index of the group flags.
> SmallVector<unsigned, 8> GroupIdx;
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121030/6e68bb29/attachment.html>
More information about the llvm-commits
mailing list