------- Comment #11 from ubizjak at gmail dot com  2007-04-05 10:58 -------
(In reply to comment #10)
> I would look at the lreg output, which contains the results of regclass.

No, the difference is due to ssa pass that generates:

  # v1z_10 = PHI <v1z_13(2), v1z_32(3)>
  # v1y_9 = PHI <v1y_12(2), v1y_31(3)>
  # v1x_8 = PHI <v1x_11(2), v1x_30(3)>
  # i_7 = PHI <i_17(2), i_36(3)>
  # v3z_6 = PHI <v3z_18(D)(2), v3z_29(3)>
  # v3y_5 = PHI <v3y_19(D)(2), v3y_26(3)>
  # v3x_4 = PHI <v3x_20(D)(2), v3x_23(3)>
  # v2z_3 = PHI <v2z_16(2), v2z_35(3)>
  # v2y_2 = PHI <v2y_15(2), v2y_34(3)>
  # v2x_1 = PHI <v2x_14(2), v2x_33(3)>

without -msse and

  # v3z_10 = PHI <v3z_18(D)(2), v3z_29(3)>
  # v3y_9 = PHI <v3y_19(D)(2), v3y_26(3)>
  # v3x_8 = PHI <v3x_20(D)(2), v3x_23(3)>
  # v2z_7 = PHI <v2z_16(2), v2z_35(3)>
  # v2y_6 = PHI <v2y_15(2), v2y_34(3)>
  # v2x_5 = PHI <v2x_14(2), v2x_33(3)>
  # v1z_4 = PHI <v1z_13(2), v1z_32(3)>
  # v1y_3 = PHI <v1y_12(2), v1y_31(3)>
  # v1x_2 = PHI <v1x_11(2), v1x_30(3)>
  # i_1 = PHI <i_17(2), i_36(3)>

with -msse compile flag. Note different variable suffixes that create different
sort order. This is (IMO) due to fact that -msse enables lots of additional
__builtin functions (these can be seen in 001.tu dump). Since we don't have x87
scheduler the results became quite unpredictable, and depend on -msseX
settings. It just _happens_ that second form better suits stack nature of x87.

So, why does SSA pass have to interfere with computation dataflow? This
interferece makes things worse and effectively takes away user's control on the
flow of data.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19780

Reply via email to