https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89550

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu.org

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the only odd behavior of VRP I see with the new iteration order is:

+Visiting PHI node: # PT = null { D.29657 } (nonlocal)
+__s_16 = PHI <_3(5), __s_19(8)>
+    Argument #0 (5 -> 6 executable)
+       _3: ~[0B, 0B]
+    Argument #1 (8 -> 6 executable)
+       __s_19: [&MEM[(void *)&__PRETTY_FUNCTION__ + 10B], &MEM[(void
*)&__PRETTY_FUNCTION__ + 10B]]
+Meeting
+  ~[0B, 0B]
+and
+  [&MEM[(void *)&__PRETTY_FUNCTION__ + 10B], &MEM[(void *)&__PRETTY_FUNCTION__
+ 10B]]
+to
+  ~[0B, 0B]
+Found new range for __s_16: [_3, -1B]

so how did we end up adjusting ~[0B, 0B] to [_3, -1B] (when we usually
prefer NULL/non-NULL for pointers)?

Then we are appearantly re-visiting the PHI node:

+Visiting PHI node: # PT = null { D.29657 } (nonlocal)
+__s_16 = PHI <_3(5), __s_19(8)>
+    Argument #0 (5 -> 6 executable)
+       _3: ~[0B, 0B]
+    Argument #1 (8 -> 6 executable)
+       __s_19: ~[0B, 0B]
+Meeting
+  ~[0B, 0B]
+and
+  ~[0B, 0B]
+to
+  ~[0B, 0B]
+

but not finding a new range (so we indeed prefer the "old" one somehow).

We first discover this via

+Visiting PHI node: # PT = null { D.29657 } (nonlocal)
+__s_16 = PHI <_3(5), __s_19(8)>
+    Argument #0 (5 -> 6 executable)
+       _3: ~[0B, 0B]
+    Argument #1 (8 -> 6 executable)
+       __s_19: [&MEM[(void *)&__PRETTY_FUNCTION__ + 10B], &MEM[(void
*)&__PRETTY_FUNCTION__ + 10B]]
+Meeting
+  ~[0B, 0B]
+and
+  [&MEM[(void *)&__PRETTY_FUNCTION__ + 10B], &MEM[(void *)&__PRETTY_FUNCTION__
+ 10B]]
+to
+  ~[0B, 0B]
+Found new range for __s_16: [_3, -1B]

Reply via email to