Displaying 20 results from an estimated 2000 matches similar to: "Clang/LLVM 5.0 optnone attribute with -O0"
2017 Sep 18
1
Clang/LLVM 5.0 optnone attribute with -O0
You can also add the -Xclang -disable-O0-optnone flag to your command line. This will disable the implicit optnone when compiling with O0.
Cheers,
Michael
On Mon, Sep 18, 2017 at 7:27 AM +0200, "Craig Topper via llvm-dev" <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote:
To prevent optnone from being added you can replace -O0 with "-O1 -Xclang
2019 Nov 13
2
Difference between clang -O1 -Xclang -disable-O0-optnone and clang -O0 -Xclang -disable-O0-optnone in LLVM 9
Hello,
I m trying to test individual O3 optimizations/ replicating O3 behavior on
IR. I took unoptimized IR (O0), used disable-o0-optnone via (*clang -O0
-Xclang -disable-O0-optnone*). I read somewhere about *clang -O1 -Xclang
-disable-O0-optnone,* so I also tested on this initial IR.
I have observed by using individual optimizations, the performance (i.e
time) is better when the base/initial
2017 Sep 19
3
Help with segfault in llvm_shutdown with LLVM 5.0 Release build
Hi,
We are upgrading an LLVM 4.0-based opt module to LLVM 5.0. After the
upgrade our module works when built with an LLVM Debug build, but
with an LLVM Release build we are encountering the following error.
This happens after our passes have successfully run. I believe this has
to do with the way our passes are registered. Would greatly appreciate
some pointers, as to where to look.
Program
2016 Dec 27
1
Question regarding LICM
Hello,
I am working on a C++ expression templates based DSL where we are using
LLVM for the code generation. I needed some help in understanding the
behaviour of the LICM pass. In the following example code the "A" class
is a custom container that defines various arithmetic operators using
expression templates. We are defining three arrays of the "A" container
and aggregating
2018 Jan 06
2
Relationship between clang, opt and llc
@Craig and @Michael
After installing clang-5.0 (download from http://releases.llvm.org, does
not have Flang build's slowdown mention above),
1. clang++ -O0 -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -c
-emit-llvm -o a.bc LULESH.cc; opt -O3 a.bc -o b.bc; llc -O3 -filetype=obj
b.bc -o b.o ; clang++ b.o -o b.out; ./b.out 20
runtime: 2.354069e+01
2. clang++ -O1 -Xclang
2018 Jan 06
2
Relationship between clang, opt and llc
Thanks a lot, it is clear to me now.
BTW, for Clang's slowdown, I submit an issue here:
https://github.com/flang-compiler/flang/issues/356
I have no idea about the root cause.
Maybe due to debug symbols. But, I already use -DCMAKE_BUILD_TYPE=Release.
Anyway, I believe there is a bug somewhere.
On Sat, Jan 6, 2018 at 3:43 PM, Craig Topper <craig.topper at gmail.com> wrote:
>
2018 Jan 06
3
Relationship between clang, opt and llc
I don't think "clang -help" prints options about optimizations. Clang
itself doesn't have direct support for fine grained optimization control.
Just the flag for levels -O0/-O1/-O2/-O3. This is intended to be simple and
sufficient interface for most users who just want to compile their code. So
I don't think there's a way to pass just -dse to clang.
opt on the other hand
2018 Jan 06
4
Relationship between clang, opt and llc
O0 didn't start applying optnone until r304127 in May 2017 which is after
the 4.0 family was branched. So only 5.0, 6.0, and trunk have that
behavior. Commit message copied below
Author: Mehdi Amini <joker.eph at gmail.com>
Date: Mon May 29 05:38:20 2017 +0000
IRGen: Add optnone attribute on function during O0
Amongst other, this will help LTO to correctly handle/honor
2018 Jan 06
0
Relationship between clang, opt and llc
What I am trying is to compile a program with different sets of
optimization flags.
If there is no fine-grained control over clang optimization flags, it would
be impossible to achieve what I intend.
Although there is fine-grained control via opt, for a large-scale projects,
clang-opt-llc pipeline may not be a drop-in solution.
On Fri, Jan 5, 2018 at 10:00 PM, Craig Topper <craig.topper at
2018 Jan 06
0
Relationship between clang, opt and llc
-disable-O0-optnone has no effect with anything other than -O0.
-O0 being passed to clang also causes all functions to be marked noinline.
I don't know if there is a command line option to turn that off.
I recommend passing "-O1 -Xclang -disable-llvm-passes" to clang. Passing
-O0 very specifically means disable optimizations.
~Craig
On Sat, Jan 6, 2018 at 12:25 PM, toddy wang
2018 Jan 06
0
Relationship between clang, opt and llc
Craig, thanks a lot!
I'm actually confused by clang optimization flags.
If I run clang -help, it will show many optimizations (denoted as set A)
and non-optimization options (denoted as set B).
If I run llvm-as < /dev/null | opt -O0/1/2/3 -disable-output
-debug-pass=Arguments, it also shows many optimization flags (denote as set
C).
There are many options in set C while not in set A,
2018 Jan 06
0
Relationship between clang, opt and llc
Why are you using build directions from "flang" which is a fortran compiler
and maintained by different people than the LLVM/clang community? But then
compiling C/C++ code? Their bug database should be used for filing bugs
against the fortran compiler not a C/C++ compiler issue.
~Craig
On Sat, Jan 6, 2018 at 1:04 PM, toddy wang <wenwangtoddy at gmail.com> wrote:
> Thanks a
2018 Jan 05
2
Relationship between clang, opt and llc
If you pass -O0 to clang, most functions will be tagged with an optnone
function attribute that will prevent opt and llc even if you pass -O3 to
opt and llc. This is the mostly likely cause for the slow down in 2.
You can disable the optnone function attribute behavior by passing "-Xclang
-disable-O0-optnone" to clang
~Craig
On Fri, Jan 5, 2018 at 1:19 PM, toddy wang via llvm-dev <
2018 Jan 06
0
Relationship between clang, opt and llc
@Zhaopei, thanks for the clarification.
@Craig and @Michael, for clang 4.0.1, -Xclang -disable-O0-optnone gives
the following error message. From which version -disable-O0-optnone gets
supported?
[twang15 at c89 temp]$ clang++ -O0 -Xclang -disable-O0-optnone -Xclang
-disable-llvm-passes -c -emit-llvm -o a.bc LULESH.cc
error: unknown argument: '-disable-O0-optnone'
[twang15 at c89
2018 Jan 07
2
Relationship between clang, opt and llc
Hi,
"SetC" options are LLVM cl::opt options, they are intended for LLVM
developer and experimentations. If a settings is intended to be used as a
public API, there is usually a programmatic way of setting it in LLVM.
"SetA" is what clang as a C++ compiler exposes to the end-user. Internally
clang will (most of the time) use one or multiple LLVM APIs to propagate a
settings.
2018 Jan 07
2
Relationship between clang, opt and llc
On Jan 5, 2018 11:30 PM, "toddy wang via llvm-dev" <llvm-dev at lists.llvm.org>
wrote:
What I am trying is to compile a program with different sets of
optimization flags.
If there is no fine-grained control over clang optimization flags, it would
be impossible to achieve what I intend.
LLD has -lto-newpm-passes (and the corresponding -lto-newpm-aa-pipeline)
which allows you to
2018 Jan 08
2
Relationship between clang, opt and llc
Hi Toddy,
You can achieve what you're looking for with a pipeline based on `clang
-Ox` + `opt -Ox` + `llc -Ox` (or lld instead of llc), but this won't be
guarantee'd to be well supported across releases of the compiler.
Otherwise, if there are some performance-releated (or not...) command line
options you think clang is missing / would benefit, I invite you to propose
adding them to
2018 Jan 06
1
Relationship between clang, opt and llc
After build LLVM5.0, I found that clang-5.0 is extremely slow.
Even it is built with -DCMAKE_BUILD_TYPE=Release
For building LULESH.cc, it gets stucked at linkage stage.
I build it as instructed from here https://github.com/flang-compiler/flang
Maybe I should submit a bug.
On Fri, Jan 5, 2018 at 8:41 PM, toddy wang <wenwangtoddy at gmail.com> wrote:
> Craig, thanks a lot!
>
>
2020 Feb 12
2
tool options to generate spill code
Hello,
For the following test case, reg.c
#include <stdio.h>
int getinput()
{
static int u=10;
return u++;
}
int main()
{
int a,b,c,d,e,f,g;
a=getinput();
b=getinput();
c=getinput();
d=getinput();
e=getinput();
f=getinput();
g=getinput();
printf("%d %d %d %d %d %d %d\n",a,b,c,d,e,f,g);
a=b=c=d=e=f=g=0;
return 0;
}
*1.
2018 Jan 07
2
Relationship between clang, opt and llc
No, I meant LLD, the LLVM linker. This option for LLD is relevant for
exploring different pass pipelines for link time optimization.
It is essentially equivalent to the -passes flag for 'opt'.
Such a flag doesn't make much sense for 'llc' because llc mostly runs
backend passes, which are much more difficult to construct custom pipelines
for (backend passes are often required