https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102356
Bug ID: 102356
Summary: compile-time explosion at -O3
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Keywords: compile-time-hog
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: haoxintu at gmail dot com
Target Milestone: ---
Hi all.
It's quite weird that the following small valid program makes GCC spend too
much time on compiling at -O3 with the "-g" enabled. It seems GCC-11.x onwards
versions all suffer this issue.
$cat s.c
#include <stdint.h>
int8_t c_5 = 0x0;
uint8_t uc_9 = 0x09;
uint64_t uli_10 = 0xF1FBFC17225F7A57;
int32_t i_12 = 0x3A6667C6;
uint8_t func( uint32_t ui_14) {
uint32_t *ptr_16 = &ui_14;
if((uli_10 /= ((0 * (*ptr_16 *= uc_9)) <= 0)))
;
i_12 = 9;
for ( ;i_12 > 2; i_12 -= 2 ) {
uli_10 = -2;
do
if ((*ptr_16 *= *ptr_16)){
c_5 = 4;
do{
c_5 -= 3;
if ((*ptr_16 *= *ptr_16))
uc_9 = 9;
} while (c_5 > 2 );
}
while ( uli_10 ++ );
}
}
$time gcc -g -O3 -c s.c
real 10m25.417s
user 9m58.685s
sys 0m0.142s
$time gcc -g -O2 -c s.c
real 0m0.124s
user 0m0.045s
sys 0m0.011s
$gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/home/haoxin/haoxin-data/compilers/gcc/build/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure
--prefix=/home/haoxin/haoxin-data/compilers/gcc/build/ --enable-bootstrap
--enable-checking=release --enable-languages=c,c++ --enable-multilib :
(reconfigured) ../configure
--prefix=/home/haoxin/haoxin-data/compilers/gcc/build/ --enable-bootstrap
--enable-checking=release --enable-languages=c,c++ --enable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 12.0.0 20210913 (experimental) (GCC)
Reproduced in Godbolt: https://godbolt.org/z/47dqnPbad
Thanks,
Haoxin