[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