------- Comment #2 from etienne_lorrain at yahoo dot fr 2007-02-13 13:44 ------- Problem is fixed by -fno-tree-vrp and -O2 I am not a specialist of -fdump-tree-all, but it seems like that: tmp.c.t35.copyprop1:
;; Function strncpy (strncpy) strncpy (pDest, pSrc, n) { char * D.1282; char * D.1281; <bb 0>: if (pDest_2 == 0B) goto <L1>; else goto <L0>; <L0>:; if (pSrc_5 == 0B) goto <L1>; else goto <L4>; <L1>:; if (pDest_2 != 0B) goto <L2>; else goto <L3>; <L2>:; *pDest_2 = 0; <L3>:; pDest_4 = pDest_2; goto <bb 6> (<L5>); <L4>:; pDest_7 = xxcpy (pDest_2, pSrc_5, n_6); pDest_8 = pDest_7; # pDest_1 = PHI <pDest_2(4), pDest_7(5)>; <L5>:; return pDest_1; } ------------------- tmp.t36.vrp, the test disappear: ;; Function strncpy (strncpy) SSA replacement table N_i -> { O_1 ... O_j } means that N_i replaces O_1, ..., O_j pDest_12 -> { pDest_2 } pDest_13 -> { pDest_2 } pDest_14 -> { pDest_2 } pDest_15 -> { pDest_2 } pSrc_16 -> { pSrc_5 } Number of virtual NEW -> OLD mappings: 0 Number of real NEW -> OLD mappings: 5 Number of total NEW -> OLD mappings: 5 Number of virtual symbols: 0 Incremental SSA update started at block: 0 Number of blocks in CFG: 9 Number of blocks to update: 9 (100%) Value ranges after VRP: pDest_1: VARYING pDest_2: ~[0B, 0B] EQUIVALENCES: { } (0 elements) <retval>_3: VARYING pSrc_5: ~[0B, 0B] EQUIVALENCES: { } (0 elements) pDest_7: VARYING pDest_8: [pDest_7, pDest_7] EQUIVALENCES: { pDest_7 } (1 elements) pDest_15: ~[0B, 0B] EQUIVALENCES: { pDest_2 } (1 elements) pSrc_16: ~[0B, 0B] EQUIVALENCES: { pSrc_5 } (1 elements) Folding predicate pDest_2 == 0B to 0 Folding predicate pSrc_5 == 0B to 0 Folding predicate pDest_2 != 0B to 1 Removing basic block 7 Removing basic block 2 Removing basic block 8 Removing basic block 3 Removing basic block 4 Removing basic block 1 Merging blocks 0 and 5 Merging blocks 0 and 6 strncpy (pDest, pSrc, n) { char * D.1282; char * D.1281; <bb 0>: pDest_7 = xxcpy (pDest_2, pSrc_5, n_6); pDest_8 = pDest_7; return pDest_7; } Thanks, Etienne. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30785