Hi,
this rather nasty bug makes value and mask to be exchanged during
streaming.  This makes us to sometimes set bogus pointer alignments
and causes misoptimization of Firefox when built with GCC 9.

Comitted as obvious.  I will backport it to release branches soon - it
is quite dangerous bug.

Honza

        * ipa-prop.c (read_ipcp_transformation_info): Fix undefined ordering
        of execution of function call parameters.
Index: ipa-prop.c
===================================================================
--- ipa-prop.c  (revision 278815)
+++ ipa-prop.c  (working copy)
@@ -4715,9 +4715,10 @@ read_ipcp_transformation_info (lto_input
          bool known = bp_unpack_value (&bp, 1);
          if (known)
            {
+             const widest_int value = streamer_read_widest_int (ib);
+             const widest_int mask = streamer_read_widest_int (ib);
              ipa_bits *bits
-               = ipa_get_ipa_bits_for_value (streamer_read_widest_int (ib),
-                                             streamer_read_widest_int (ib));
+               = ipa_get_ipa_bits_for_value (value, mask);
              (*ts->bits)[i] = bits;
            }
        }

Reply via email to