On Sun, 2022-01-23 at 08:37 +0000, Vishal Subramanyam via Gcc-help wrote: > When compiling the following C++ snippet with -O0, I'm getting a > Floating Point Exception on my Ubuntu 21.10, g++ 11.2.0, x86-64. > > #include <iostream> > > int func(int n, int r) > { > return n % r; > } > int main() > { > const int n = 15, r = 0; > if (r == 0 || func(n, r)) > std::cout << "YES" << std::endl; > else > std::cout << "NO" << std::endl; > if (func(n, r) || r == 0) > std::cout << "YES" << std::endl; > else > std::cout << "NO" << std::endl; > return 0; > } > > With -O0, I'm getting a Floating Point error in the second if > condition since it involves executing the "func" function where > division by zero occurs. > > YES > Floating point exception (core dumped) > > Now, with -O1 optimization, this is the output. > > YES > YES > > The "func" call has been optimized away. I checked the assembly code > output with -S and verified the same. Now, I would like to know what > was the optimization (the optimization option) that led to this > happening. When I tried compiling the same code with -O0 but with an > additional "-fipa-pure-const", I'm getting the same output as the O1 > program with two YESes. I can reproduce this behavior, but I have some doubt on this: I remember someone told me that -f* options had no effect with -O0. > But when I try compiling with both the -O1 and -fno-ipa-pure-const, I > am not getting the Floating Point Exception. If -fipa-pure-const is > responsible for the optimization that removes the function call, > shouldn't the function call occur with -fno-ipa-pure-const. I have > tried various combinations of options related to dead code elimination > and branch probabilities, but can't figure out what's happening? You need -fno-inline. If the function call is inlined completely, then the compiler can find and remove dead code without any inter-procedural analysis. > g++ t.cc -O1 -fno-inline -fno-ipa-pure-const && ./a.out > YES > [1] 4151 floating point exception (core dumped) ./a.out -- Xi Ruoyao <xry111@xxxxxxxxxxxxxxxx> School of Aerospace Science and Technology, Xidian University