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