https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93644
Jeffrey A. Law <law at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |law at redhat dot com --- Comment #5 from Jeffrey A. Law <law at redhat dot com> --- WRT c#2, yes it's a reasonable deduction, but the warning and the point where we have the asserts are in two different passes. ie, the info isn't really available when we need it. What we might be able to do is see the assert: buffer_16 = ASSERT_EXPR <buffer_3, buffer_3 != &stack_buf>; Then look at the DEF point for buffer_3: # buffer_3 = PHI <&stack_buf(3), buffer_8(D)(9)> Which means at the point of the assertion that buffer_16 can only have the value buffer_8 and replace the assert with buffer_16 = buffer_8 That would in turn allow the use of buffer_16 in the problematic PHI to be replaced with buffer_8 and avoid the problem We have to be careful and ensure that doesn't break the SSA form (it's safe in this example because buffer_8 is the default def).