[llvm-commits] [llvm] r102400 - in /llvm/trunk: include/llvm/Target/TargetInstrInfo.h lib/CodeGen/AsmPrinter/AsmPrinter.cpp lib/Target/X86/X86InstrInfo.cpp lib/Target/X86/X86InstrInfo.h test/CodeGen/PowerPC/2008-01-25-EmptyFunction.ll test/CodeGen/X86/2008-01-25-EmptyFunction.ll

Chris Lattner sabre at nondot.org
Tue Apr 27 00:35:15 PDT 2010


On Apr 26, 2010, at 5:36 PM, Dale Johannesen wrote:

> 
> On Apr 26, 2010, at 4:37 PM, Chris Lattner wrote:
> 
>> Author: lattner
>> Date: Mon Apr 26 18:37:21 2010
>> New Revision: 102400
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=102400&view=rev
>> Log:
>> on darwin empty functions need to codegen into something of non-zero length,
>> otherwise labels get incorrectly merged.  We handled this by emitting a
>> ".byte 0", but this isn't correct on thumb/arm targets where the text segment
>> needs to be a multiple of 2/4 bytes.  Handle this by emitting a noop.  This
>> is more gross than it should be because arm/ppc are not fully mc'ized yet.
> 
> Interestingly enough, we have a similar regression with zero-length arrays.  I don't suppose you fixed that too, did you?  Looks more like a FE (llvm-gcc) bug.
> 
> int x[0];
> struct {} y;
> struct { struct {}a[0]; } s12;
> 
> Works in C, not in C++.  (Analyzed by Nick in 7886017.)

No, that's a completely different issue.  You'll notice that C fails in -fno-common mode as well.  I will fix it though, looks trivial.

-Chris



More information about the llvm-commits mailing list