------- Comment #3 from jakub at gcc dot gnu dot org  2008-01-21 14:15 -------
To answer my question, new16.C fails if the build_new_1 setting of
placement_expr and both calls to avoid_placement_new_aliasing are commented
out.  I believe PR33407 is meant to handle this, unfortunately there is nothing
that prevents coalescing DECL_NO_TBAA_P variables with non-DECL_NO_TBAA_P ones.
At *.cleanup_cfg2 time we have in the inner loop:
  lD.2031_7 = (intD.2 *) pD.2025_6(D);
  *lD.2031_7 ={v} 0;
  D.2058_13 = pD.2025_6(D);
  D.2036_8 = D.2058_13;
  fD.2029_9 = (long intD.5 *) D.2036_8;
  *fD.2029_9 ={v} -1;
  iD.2030_10 = iD.2030_2 + 1;
where D.2058 is DECL_NO_TBAA_P.  But:
Try : D.2058_13(P13) & p_6(D)(P6) : Incompatible types.  No coalesce.
Try : D.2036_8(P8) & D.2058_13(P13) --> P8 D.2036
Coalesced D.2058_13 to D.2036_8
already at *.copyrename1 time and DECL_NO_TBAA_P is lost.  If DECL_NO_TBAA_P
decls are lost this easily, I guess PR33407 was fixed just by luck that in that
case it is not optimized out away.


-- 


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

Reply via email to