[llvm-commits] [llvm] r56290 - in /llvm/trunk: include/llvm/CodeGen/LiveIntervalAnalysis.h include/llvm/CodeGen/MachineOperand.h include/llvm/CodeGen/ScheduleDAG.h lib/CodeGen/AsmPrinter/AsmPrinter.cpp lib/CodeGen/LiveIntervalAnalysis.cpp lib/CodeGen/MachineInstr.cpp lib/CodeGen/RegAllocLinearScan.cpp lib/CodeGen/SelectionDAG/ScheduleDAGEmit.cpp lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp test/CodeGen/X86/2008-09-17-inline-asm-1.ll
clattner at apple.com
Sun Sep 21 18:11:11 PDT 2008
On Sep 17, 2008, at 2:13 PM, Dale Johannesen wrote:
> Author: johannes
> Date: Wed Sep 17 16:13:11 2008
> New Revision: 56290
> URL: http://llvm.org/viewvc/llvm-project?rev=56290&view=rev
> Add a bit to mark operands of asm's that conflict
> with an earlyclobber operand elsewhere. Propagate
> this bit and the earlyclobber bit through SDISel.
> Change linear-scan RA not to allocate regs in a way
> that conflicts with an earlyclobber. See also comments.
Ok, as per my previous email, I'm either missing something, or the
approach is wrong, that said:
> --- llvm/trunk/include/llvm/CodeGen/MachineOperand.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/MachineOperand.h Wed Sep 17
> 16:13:11 2008
> @@ -73,6 +73,12 @@
> /// for description of earlyclobber.
> bool IsEarlyClobber : 1;
> + /// OverlapsEarlyClobber - True if this MO_Register operand is
> used as an
> + /// input to an inline asm that has the earlyclobber bit set on
> some other
> + /// operand. Flag is not valid for any other case. See gcc doc
> + /// for description of earlyclobber.
> + bool OverlapsEarlyClobber : 1;
Why do you need this bit on MachineOperand? This seems like a
property that could be computed by whatever pass wants it, not
something that should be stored in MachineOperand.
More information about the llvm-commits