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

Andrew Kelley via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 23 15:09:44 PDT 2017


On Mon, Oct 23, 2017 at 5:59 PM, Friedman, Eli <efriedma at codeaurora.org>
wrote:

> 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.
>

Fair, but as a frontend I want to make this a friendly compile error and
not a mysterious LLVM assertion failure :-)


>
> 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.


Good to know, thanks.


>
>
> -Eli
>
> --
> Employee of Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux
> Foundation Collaborative Project
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171023/777d9fef/attachment.html>


More information about the llvm-dev mailing list