[llvm-dev] LLVMTargetMachine with optimization level passed from clang.

Mehdi Amini via llvm-dev llvm-dev at lists.llvm.org
Thu Jan 5 09:15:02 PST 2017


That usually happens in TargetPassConfig. Have you looked at TargetPassConfig::addMachinePasses()?

— 
Mehdi

> On Jan 5, 2017, at 8:12 AM, sgundapa at codeaurora.org wrote:
> 
> I want the optimization to be turned on at -O1 and above.
> In my case, it is a target independent back-end pass. (Eg: MachinePipeliner)
> 
> 
> On 2017-01-04 18:10, Mehdi Amini wrote:
>>> On Jan 4, 2017, at 4:03 PM, Sumanth Gundapaneni via llvm-dev
>>> <llvm-dev at lists.llvm.org> wrote:
>>> I see the BackendUtil.cpp of Clang creates the TargetMachine with
>>> the optimization level based on below mentioned logic
>>> CodeGenOpt::Level OptLevel = CodeGenOpt::Default;
>>> switch (CodeGenOpts.OptimizationLevel) {
>>> default: break;
>>> case 0: OptLevel = CodeGenOpt::None; break;
>>> case 3: OptLevel = CodeGenOpt::Aggressive; break;
>>> }
>>> As per my understanding, the correspondence between optimization
>>> level and CodeGenOpt is as below
>>> O0  -  none
>>> O1  -  less
>>> O2 -   default
>>> O3  -  aggressive
>>> My goal is to turn on a target dependent codegen optimization at
>>> –O1(less).
>> Apparently “less” is not used by clang, do you want your
>> optimization to be turned on for O1 *and above* or just for O1
>> specifically?
>> Also what kind of optimization is this? A SelectionDAG combine or a
>> specific pass? If it is a pass, is it IR or MIR?
>>>> Mehdi
>>> The TargetMachine is constructed with “CodeGenOpt::Default”. Is
>>> there a way I could do this in LLVM ? What is the standard way of
>>> doing this ? Also, the code in BackendUtil.cpp seem somewhat offbeat
>>> to me.
>>> --Sumanth G
>>> _______________________________________________
>>> 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