re PR middle-end/27529 (Does not fold (char *)(size_t)char_ptr or (size_t)(char ...
authorRichard Guenther <rguenther@suse.de>
Thu, 11 May 2006 08:29:40 +0000 (08:29 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 11 May 2006 08:29:40 +0000 (08:29 +0000)
commit497cfe246bdf101183523f93ee9d9571c4381505
tree17f244ccd429a0d120041c3e273cdd7bc9688376
parent34b95ebe0ea7f9b872986a43722af52f005640ba
re PR middle-end/27529 (Does not fold (char *)(size_t)char_ptr or (size_t)(char *)size_t_var)

2006-05-11  Richard Guenther  <rguenther@suse.de>

PR middle-end/27529
* fold-const.c (fold_unary): Handle intermediate conversion
to a pointer type like intermediate conversion to an integer
type in folding of (T1)(T2)var to var.
Match the code to the comment in the final conversion for
(T1)(T2)var to (T1)var regarding to type precision.  Rather
than disallow T1 being of pointer type, assert that both T1
and var are of pointer type or not.  Make sure not to fall
over the frontends lazyness wrt array to pointer decay though.

* gcc.dg/tree-ssa/foldcast-1.c: New testcase.

From-SVN: r113692
gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c [new file with mode: 0644]