https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88677
Jan Hubicka <hubicka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|hubicka at gcc dot gnu.org |rguenther at suse dot de
--- Comment #13 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
So even with the patch for TYPE_NEEDS_CONSTRUCTING I get the following
difference in fre1 dump (and it is first one). I also use -fno-strict-aliasing
--- test.ii.033t.fre1 2019-02-10 13:27:45.531305878 +0100
+++ dd/test.ii.033t.fre1 2019-02-10 13:27:34.895310810 +0100
@@ -120,7 +120,7 @@
n::p (struct n * const this)
{
int SR.3;
- struct D D.2531;
+ struct D D.2527;
struct D D.2507;
unsigned int _1;
@@ -221,9 +221,9 @@
marking outgoing edge 6 -> 8 executable
Processing block 5: BB8
Value numbering stmt = SR.9_27 = MEM[(struct D *)&m];
-Setting value number of SR.9_27 to SR.8_23 (changed)
+Setting value number of SR.9_27 to SR.9_27 (changed)
marking outgoing edge 8 -> 9 executable
-Making available beyond BB8 SR.9_27 for value SR.8_23
+Making available beyond BB8 SR.9_27 for value SR.9_27
Processing block 6: BB7
Value numbering stmt = SR.9_26 = 0;
RHS 0 simplified to 0
@@ -233,12 +233,11 @@
Value numbering stmt = .MEM_14 = PHI <.MEM_6(7), .MEM_6(8)>
Setting value number of .MEM_14 to .MEM_6 (changed)
Value numbering stmt = SR.9_12 = PHI <SR.9_26(7), SR.9_27(8)>
-Marking CSEd to PHI node SR.8_11 = PHI <SR.8_2(3), SR.8_23(4)>
-Setting value number of SR.9_12 to SR.8_11 (changed)
-SR.8_11 is available for SR.8_11
+Setting value number of SR.9_12 to SR.9_12 (changed)
+Making available beyond BB9 SR.9_12 for value SR.9_12
Value numbering stmt = MEM[(struct D *)&D.2498] = SR.9_12;
No store match
-Value numbering store MEM[(struct D *)&D.2498] to SR.8_11
+Value numbering store MEM[(struct D *)&D.2498] to SR.9_12
Setting value number of .MEM_18 to .MEM_18 (changed)
Value numbering stmt = return;
marking outgoing edge 9 -> 1 executable
@@ -252,9 +251,7 @@
Value numbering stmt = <L1>:
Value numbering stmt = resx 1
RPO iteration over 10 blocks visited 10 blocks in total discovering 10
executable blocks iterating 1.0 times, a block was visited max. 1 times
-RPO tracked 2 values available at 3 locations and 17 lattice elements
-Replaced redundant PHI node defining SR.9_12 with SR.8_11
-Removing dead stmt SR.9_12 = PHI <0(7), SR.9_27(8)>
+RPO tracked 4 values available at 4 locations and 17 lattice elements
Removing dead stmt SR.9_26 = 0;
Removing dead stmt _10 = a_7(D);
Removing dead stmt SR.7_24 = SR.8_11;
@@ -281,9 +278,9 @@
int SR.8;
int SR.7;
unsigned int a;
- struct D D.2547;
- struct D D.2545;
- struct D D.2544;
+ struct D D.2543;
+ struct D D.2541;
+ struct D D.2540;
struct n a;
struct D D.2498;
struct D D.2497;
@@ -313,7 +310,8 @@
SR.9_27 = MEM[(struct D *)&m];
<bb 7> :
- MEM[(struct D *)&D.2498] = SR.8_11;
+ # SR.9_12 = PHI <0(5), SR.9_27(6)>
+ MEM[(struct D *)&D.2498] = SR.9_12;
return;
<bb 8> :
Richi, do you have any idea what happens here? If needed I can analyze it
more...