------- 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