https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67814
--- Comment #2 from Jameson <vtjnash at gmail dot com> --- I did some further analysis with -dump-rtl-all -dump-tree-all. The SSA form looked fine, as did the initial conversion to RTL. It seemed like something confused the rtl-reload pass such that decided to reordered the statements: size_t alsz = f(sz); if (alsz > sz) { }; sz = alsz; into: size_t alsz = f(sz, al); sz = alsz; if (sz > sz) { }; I tried disabling that pass (--disable-rtl-reload), but it ran into a gcc internal compiler error: in regstat_init_n_sets_and_refs, at regstat.c:67, so I guess this pass is required by some later pass.