[llvm-dev] How to get CLang array alloca alignments to be smaller than 16 bytes?

Joan Lluch via llvm-dev llvm-dev at lists.llvm.org
Sun May 5 10:26:38 PDT 2019


Hi Tim,

I appreciate your reply, but I can’t still find any relation with “LargeArrayMinWidth” and x86 target. This variable is only in the TargetInfo.cpp and TargetInfo.h files and it’s not even in any x86 related file. I think there should be something else that causes my issue. I have my backend very advanced and already producing good assembly code, but this supposedly simple thing has got me stuck. Are you sure there’s nothing else beyond LargeArrayMinWidth that causes this?

John 

Tel: 620 28 45 13

> On 5 May 2019, at 19:07, Tim Northover <t.p.northover at gmail.com> wrote:
> 
> (Adding llvm-dev back in, in case someone else searches with similar
> questions; though cfe-dev might be better for these issues).
> 
> On Sun, 5 May 2019 at 17:54, Joan Lluch <joan.lluch at icloud.com> wrote:
>> I have implemented all the steps to register a target backend for LLVM and so far I’m doing ok with it, but I do not know how to select a particular target on Clang. I just modified the “TargetInfo.cpp” file as I posted on my previous email to get 16 bit ints. So, any more insights will be appreciated.
> 
> There are probably about 5-10 different places that need at least
> basic modification for a new target in Clang. It's something done
> pretty rarely so there's not really any documentation, I'd suggest
> grepping the source for an existing target (e.g. aarch64) and
> copy/pasting that with modifications for yours.
> 
> This will mostly involve creating a few new subclasses for your
> target, and telling generic clang code about them in one or two spots,
> but I'm afraid I don't recall exact files & lines.
> 
> If you can run "clang -target myarch-none-elf" and get a Module
> targeting your CPU (i.e. with the correct "target triple" and
> "datalayout") that's a good first step. At some point you'll want to
> actually think about the ABI decisions you've made and perhaps modify
> them (like this array issue), but to begin with you can leave it as
> is.
> 
>> On the other hand I’m unable to find LargeArrayMinSize in any project files (not even in lib/Basic/Targets/X86.cpp)
> 
> Sorry, I think that may actually be "LargeArrayMinWidth". I
> investigated on a different computer to where I typed up my first
> reply so didn't have the exact text on screen.
> 
>> LargeArrayAlign is only in TargetInfo.h and TargetInfo.cpp which is set to a value of 0 (Zero)
> 
> The default is set to 0 in TargetInfo.cpp, but I see it overridden in
> X86.h, even in the 7.0 branch (again, typo in my original comment,
> where I said .cpp). You'll be creating the equivalent file as part of
> adding support to Clang for your target.
> 
> Cheers.
> 
> Tim.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190505/7b920f7f/attachment.html>


More information about the llvm-dev mailing list