[llvm-dev] How to get generic datalayout and "target-cpu" attribute
Manuel Jacob via llvm-dev
llvm-dev at lists.llvm.org
Thu Jan 14 18:44:22 PST 2016
Hi Mehdi,
On 2016-01-15 02:52, Mehdi Amini wrote:
> It seems that you may want to have a look at
> http://llvm.org/docs/doxygen/html/Host_8h_source.html
I think this will give me the "fastest" CPU model and feature set
available. However, I want a generic model, which is "x86-64" in my
case.
> Also, your compiler could easily just produce the final object file
> directly instead of calling opt/llc (mimic opt.cpp and llc.cpp for
> instance, or what clang is doing).
Sorry for not having stated that more explicitly. My compiler can only
output a text file and doesn't link against LLVM libraries.
> —
> Mehdi
>
>> On Jan 14, 2016, at 5:31 PM, Manuel Jacob via llvm-dev
>> <llvm-dev at lists.llvm.org> wrote:
>>
>> Hi,
>>
>> My compiler emits LLVM IR in text form and passes it to the opt and
>> llc executables.
>>
>> The datalayout and triple are currently determined by running "clang
>> -x c /dev/null -emit-llvm -S -o -" and parsing the output. This works
>> fine because clang seems to choose a generic version of the CPU it is
>> running on, and this is exactly what we want. Still this solution is
>> hacky and I'd like to know whether there is a cleaner way to achieve
>> this.
>>
>> The "target-cpu" attribute is not set at all by my compiler. I'm
>> concerned that this limits the effectiveness of certain optimization
>> passes. I don't understand when the triple is used and when the
>> "target-cpu" attribute is used.
>>
>> The compiler links some other IR, which is generated by clang, into
>> the main IR output of the compiler before optimization. The functions
>> pulled in from the clang outputs have the "target-cpu" attribute set.
>> On X86, the inliner refuses to inline these functions because the
>> features of the CPU model set on the callee are a superset of those of
>> the caller.
>>
>> It is of course possible to compile a short C function with clang and
>> fish the "target-cpu" attribute out of the IR. However, I don't want
>> to introduce another hack.
>>
>> Can someone recommend a cleaner way to get the datalayout and
>> "target-cpu" attribute for a generic model of the CPU we're compiling
>> on?
>>
>> -Manuel
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
More information about the llvm-dev
mailing list