[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

Chris Lattner 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
> Log:
> 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.

-Chris




More information about the llvm-commits mailing list