https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90387
JunMa <JunMa at linux dot alibaba.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |JunMa at linux dot alibaba.com --- Comment #2 from JunMa <JunMa at linux dot alibaba.com> --- VRP tries to fold builtin_constant_p when its argument is a function parameter. builtin_constant_p should be removed as dead stmt in this case no matter "#if 1 " or "#if 0", since p_len is function parameter. When "#if 1" turns true, vrp pass inserts ASSERT_EXPR to infer value range of p_len, this changes argument of builtin_constant_p from function parameter to result of ASSERT_EXPR which breaks the rule.