This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/36343] [4.3/4.4 Regression] Wrong code due to bad TBAA pruning of points-to-sets and use in call clobbering
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 27 May 2008 12:45:29 -0000
- Subject: [Bug tree-optimization/36343] [4.3/4.4 Regression] Wrong code due to bad TBAA pruning of points-to-sets and use in call clobbering
- References: <bug-36343-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from rguenth at gcc dot gnu dot org 2008-05-27 12:45 -------
If you investigate why this doesn't happen more often you find that
directly_dereferenced is only ever set if you dereference a pointer and the
result is also a pointer. (Thus the complicated testcase)
In essence - we almost _never_ TBAA-prune the points-to-sets.
The correct solution is (apart from improving the TBAA-pruning) to use the
original points-to solution for computing the call-clobbered variables, not
the TBAA-pruned points-to set.
For 4.3 the easiest and least invasive solution is to rip out the
TBAA-pruning code completely. This is also the temporary solution for the
mainline.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |4.3.0 4.4.0
Known to work| |4.1.3 4.2.4
Summary|Wrong code due to bad TBAA |[4.3/4.4 Regression] Wrong
|pruning of points-to-sets |code due to bad TBAA pruning
|and use in call clobbering |of points-to-sets and use in
| |call clobbering
Target Milestone|--- |4.3.1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36343