[llvm-dev] maximum value for alignstack function attribute?

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 23 14:59:09 PDT 2017


On 10/23/2017 1:02 PM, Andrew Kelley via llvm-dev wrote:
> I have this test case in my frontend, which is triggering an assert in 
> llvm master branch:
>
> fn fnWithAlignedStack() -> i32 {
>     @setAlignStack(1024);
>     return 1234;
> }
>
> It sets alignstack=1024 in the function attributes (see 
> http://llvm.org/docs/LangRef.html#function-attributes). It's tripping 
> an assert:
>
> llvm/lib/IR/Attributes.cpp:134: static llvm::Attribute 
> llvm::Attribute::getWithStackAlignment(llvm::LLVMContext&, uint64_t): 
> Assertion `Align <= 0x100 && "Alignment too large."'
>
> Is 0x100 the correct maximum alignstack value? Can I submit a patch to 
> document this in LangRef.html?

Yes...?  But nobody should ever specify a value anywhere near that large.

The point of the attribute is to fixup the stack alignment in cases of 
ABI mismatches, so you normally don't want to specify a value higher 
than the actual ABI alignment of the stack.  If you want to allocate 
aligned memory on the stack, you can just set the alignment of an 
alloca, and the code generator will provide memory with the appropriate 
alignment.

-Eli

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project



More information about the llvm-dev mailing list