Hello,
I am trying to apply level 3 of optimizations to a simple program. If I run:
clang -S -O3 -emit-llvm test.cpp -o testo.ll
all seems OK, the result testo.ll is highly optimized.
However if I attempt the same using:
clang -S -emit-llvm test.cpp -o a.ll
opt-10 -S --O3 a.ll -o test.ll
then there is no optimization performed.
The test program that I am using is:
#include <iostream>
__attribute__((always_inline)) void ADD(bool en, int x, int y, bool &ok, int
&r)
{
if(en)
{
ok = true;
r = x + y;
}
else
{
ok = false;
r = 0;
}
}
void test()
{
bool en = true;
int x = 123;
int y = 321;
int z;
bool ok;
ADD(en, x, y, ok, z);
std::cout << z;
}
Best regards,
Viorel
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20210125/982ecdc3/attachment.html>
Hi,> On Jan 25, 2021, at 11:48, via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > Hello, > > I am trying to apply level 3 of optimizations to a simple program. If I run: > > clang -S -O3 -emit-llvm test.cpp -o testo.ll > > all seems OK, the result testo.ll is highly optimized. > > However if I attempt the same using: > > clang -S -emit-llvm test.cpp -o a.ll > opt-10 -S --O3 a.ll -o test.ll >Please take a look at the attributes added to the functions: https://godbolt.org/z/fs9f8n <https://godbolt.org/z/fs9f8n> . Without optimizations (-O0), Clang will add `optnone` to the functions, effectively disabling optimizations when you run `opt`. If you don’t want clang to run optimizations, but not add `optnone`, you can use `clang -O3 -emit-llvm -S -mllvm -disable-llvm-optzns`. Cheers, Florian -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210125/8bd8cc1c/attachment.html>