This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]