[llvm-commits] [llvm-gcc-4.0] r41882 - in /llvm-gcc-4.0/trunk/gcc: config/darwin.h llvm-backend.cpp varasm.c

Evan Cheng evan.cheng at apple.com
Mon Sep 17 16:09:10 PDT 2007


On Sep 17, 2007, at 3:35 PM, Bill Wendling wrote:

> Hi Duncan (et al),
>
>> I've CC'd Anton since he's the one who knows all about this stuff.   
>> Presumably
>> when A is an alias for B there are two cases: either this is a  
>> "weak alias" or
>> weakref, meaning that at link time it may turn out that A wasn't an  
>> alias for
>> B after all, or A is a strong alias (a term I just invented) for B,  
>> meaning that
>> this is definitive: you can replace uses of A with uses of B  
>> everywhere.  In the
>> first case linker support is required, but not in the second case,  
>> so presumably
>> it is wrong to turn off alias support in the second case.  I don't  
>> know if your
>> patch turned this second case off or not.
>>
>> In the first case (weakrefs) we output a special declaration to the  
>> bitcode
>> saying that A is a weak alias for B.  I think it is a mistake not  
>> to output
>> this even for platforms like Darwin that don't handle weakrefs:  
>> such aliases
>> may be resolvable by LLVM, for example when linking modules using  
>> llvm-link.
>> Think also of running bitcode under lli.  Thus there are some cases  
>> in which
>> weakrefs can work correctly even on Darwin.
>>
>> Instead, I suggest we output a warning in the f-e that aliases are  
>> not supported,
>> but still generate the alias in the bitcode.  Then we teach the  
>> code generators,
>> which presumably means the asm printer, to ignore aliases on Darwin.
>>
>> On the other hand, not all bitcode is generated by llvm-gcc.  It  
>> may be a bad
>> idea to have LLVM quietly ignore aliases on Darwin because of the  
>> potential
>> surprise and trouble it may create for front-end writers who aren't  
>> aware of
>> this.
>>
> Good point. As Evan points out, the asm printer is already doing a lot
> of stuff that it shouldn't, but my patch doesn't handle the case where
> bitcode is generated by non-llvm-gcc programs or on other platforms.
> :-/ I'll check into this more. The macro can stay and we can just emit
> the warning, still emit the global aliasing code, but ignore it during
> assembly emission.
>
> Evan, does this sound like an okay idea?

I don't really see a clean solution at this point. I guess asm printer  
will have to handle bitcode generated for a different target. :-(

Evan

>
>
> -bw
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list