[llvm-commits] [llvm] r43734 - in /llvm/trunk: lib/AsmParser/ParserInternals.h lib/AsmParser/llvmAsmParser.cpp.cvs lib/AsmParser/llvmAsmParser.h.cvs lib/AsmParser/llvmAsmParser.y lib/AsmParser/llvmAsmParser.y.cvs lib/Bitcode/Reader/BitcodeReader.cpp lib/CodeGen/AsmPrinter.cpp lib/CodeGen/SelectionDAG/ScheduleDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp lib/CodeGen/SelectionDAG/TargetLowering.cpp test/CodeGen/X86/asm-block-labels.ll

Dale Johannesen dalej at apple.com
Wed Nov 7 10:01:56 PST 2007


On Nov 7, 2007, at 9:51 AM, Chris Lattner wrote:
> On Nov 5, 2007, at 1:20 PM, Dale Johannesen wrote:
>> Author: johannes
>> Date: Mon Nov  5 15:20:28 2007
>> New Revision: 43734
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=43734&view=rev
>> Log:
>> Make labels work in asm blocks; allow labels as
>> parameters.  Rename ValueRefList to ParamList
>> in AsmParser, since its only use is for parameters.
>
> Hey Dale,
>
>> +"LASM$foo":		; preds = %entry
>> +	call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~
>> {fpsr},~{flags}"( )
>> +	call void asm sideeffect ".line 1", "~{dirflag},~{fpsr},~ 
>> {flags}"( )
>> +	call void asm sideeffect "int $$1", "~{dirflag},~{fpsr},~{flags},~
>> {memory}"( )
>> +	call void asm sideeffect ".file \22block12.c\22", "~{dirflag},~
>> {fpsr},~{flags}"( )
>> +	call void asm sideeffect ".line 2", "~{dirflag},~{fpsr},~ 
>> {flags}"( )
>> +	call void asm sideeffect "brl ${0:l}", "X,~{dirflag},~{fpsr},~
>> {flags},~{memory}"( label %"LASM$foo" )
>
> This is somewhat dangerous: I think there is code in the compiler
> that assumes that only phi nodes and terminators use basic block.
>
> One specific problem with this is that the data-flow machinery won't
> know that the asm branches to LASM$foo, so misoptimizations can
> happen.  I guess the question is how common this is an how important
> it is that it works :)

This construct got an internal error before, so I claim this is an  
improvement.
Asm's are still a long way from working well; it wouldn't surprise me  
if they
call for some optimizer changes.  (But we really should be disabling  
most
optimizations on asm's, as I've said before.)

If you want to be able to compile the same set of programs as Apple's  
gcc,
it needs to work.  But not necessarily tomorrow.




More information about the llvm-commits mailing list