-
Notifications
You must be signed in to change notification settings - Fork 142
Description
After upgrading to LLVM 17, the 521.wrf_r benchmark in SPEC CPU2017 is miscompiled at O3 with LTO enabled. Examination of the crash site shows that a large amount of code that used to be inlined into wrf_init
(via alloc_and_configure_domain
) has been deleted, leaving the head_grid
pointer uninitialized.
The root cause of this problem is that upstream LLVM had strengthened the pruning of unreachable code to handle undef
and poison
. Specifically, these three patches are found to be relevant:
Classic Flang leaves variables uninitialized by default. The corresponding IR values are therefore considered to contain undef
. In our downstream compiler, we have tested with initializing all variables to zeroes, and that successfully avoids the problem.
628.pop2_s is also affected by this problem.