[llvm-dev] Difference between clang -O1 -Xclang -disable-O0-optnone and clang -O0 -Xclang -disable-O0-optnone in LLVM 9

Robinson, Paul via llvm-dev llvm-dev at lists.llvm.org
Wed Nov 13 06:58:00 PST 2019

Without actually trying it myself, I would say that the -O1 command line runs optimization passes where the -O0 command line does not.  Thus, your “baseline” IR is already somewhat optimized in the -O1 case.  If you want to see IR with no optimizations run at all, you want to add `-Xclang -disable-llvm-passes` to your command line for producing unoptimized IR.  I think this would produce the same results for -O0 and -O1.

From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of hameeza ahmed via llvm-dev
Sent: Wednesday, November 13, 2019 4:02 AM
To: llvm-dev <llvm-dev at lists.llvm.org>
Subject: [llvm-dev] Difference between clang -O1 -Xclang -disable-O0-optnone and clang -O0 -Xclang -disable-O0-optnone in LLVM 9

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 IR is generated via  clang -O1  -Xclang -disable-O0-optnone. In case of clang -O0  -Xclang -disable-O0-optnone initial IR, the performance is reduced.

What is the possible reason for this?

What is the right way?
Please guide.
Thank You
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191113/f7de2554/attachment.html>

More information about the llvm-dev mailing list