[LLVMdev] [llvm-c] LLVMAttribute possible bug

Benjamin Kramer benny.kra at gmail.com
Sun Feb 17 04:53:33 PST 2013


On 17.02.2013, at 13:30, Moritz Maxeiner <moritzmaxeiner at googlemail.com> wrote:

> While writing bindings to LLVM for another language via the c api I noticed that
> LLVMAlignment and LLVMStackAlignment do not use 1<<x like all the others,
> but 31<<x and 7<x respectively (see below, or here: http://llvm.org/docs/doxygen/html/Core_8h_source.html#l00148).
> It's likely this is as it is intended, but it does look out-of-place enough that
> I thought it might be a typo and I would like to know. Also, 1<<27 and 1<<28
> get skipped over from LLVMStackAlignment to LLVMReturnsTwice:

This is intentional. LLVMAlignment is not just a bit, it's a 5 bit value so we reserve 5 bits for it. Same for the 3 bits LLVMStackAlignment uses.

- Ben

> LLVMZExtAttribute
>        = 1<<0,
> 
> LLVMSExtAttribute
>        = 1<<1,
> 
> LLVMNoReturnAttribute
>    = 1<<2,
> 
> LLVMInRegAttribute
>       = 1<<3,
> 
> LLVMStructRetAttribute
>   = 1<<4,
> 
> LLVMNoUnwindAttribute
>    = 1<<5,
> 
> LLVMNoAliasAttribute
>     = 1<<6,
> 
> LLVMByValAttribute
>       = 1<<7,
> 
> LLVMNestAttribute
>        = 1<<8,
> 
> LLVMReadNoneAttribute
>    = 1<<9,
> 
> LLVMReadOnlyAttribute
>    = 1<<10,
> 
> LLVMNoInlineAttribute
>    = 1<<11,
> 
> LLVMAlwaysInlineAttribute
>     = 1<<12,
> 
> LLVMOptimizeForSizeAttribute
>  = 1<<13,
> 
> LLVMStackProtectAttribute
>     = 1<<14,
> 
> LLVMStackProtectReqAttribute
>  = 1<<15,
> 
> LLVMAlignment = 31<<16,
> LLVMNoCaptureAttribute
>   = 1<<21,
> 
> LLVMNoRedZoneAttribute
>   = 1<<22,
> 
> LLVMNoImplicitFloatAttribute
>  = 1<<23,
> 
> LLVMNakedAttribute
>       = 1<<24,
> 
> LLVMInlineHintAttribute
>  = 1<<25,
> 
> LLVMStackAlignment = 7<<26,
> LLVMReturnsTwice = 1 << 29,
> LLVMUWTable = 1 << 30,
> 
> 
> http://llvm.org/docs/doxygen/html/Core_8h_source.html#l00148
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev





More information about the llvm-dev mailing list