copy_rtx() bug (?)
Tristan Gingold
gingold@email.enst.fr
Wed Oct 1 23:28:00 GMT 1997
Le 1997-10-01, Thomas Koenig écrivait :
> Just continuing to comb through cc1 with Checker...
[...]
> 320 XEXP (copy, i) = copy_rtx (XEXP (orig, i));
> 321 break;
> 322
> 323 case '0':
> 324 case 'u':
> 325 XEXP (copy, i) = XEXP (orig, i);
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 326 break;
[...]
> Obviously, orig->fld[1].rtx has not been initialized (it's all zeroes
> in this case):
>
> (gdb) p orig->fld[1]
> $14 = {rtwint = 0, rtint = 0, rtstr = 0x0, rtx = 0x0, rtvec = 0x0,
> rttype = VOIDmode}
You can try to delay the warning by using bcopy or memcpy to copy the rtx.
In this case, Checker will only copy the right of the memory. As a consequence
no warning would be issued at line 325, and furthermore, reading uninitialized
fields of 'copy' would produce warnings.
Perhaps this would be fixed with gcc Checker.
Tristan.
More information about the Gcc
mailing list