This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/28632] VRP should understand bitwise OR and AND
- From: "vda dot linux at googlemail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 20 Aug 2008 15:07:01 -0000
- Subject: [Bug tree-optimization/28632] VRP should understand bitwise OR and AND
- References: <bug-28632-12956@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #15 from vda dot linux at googlemail dot com 2008-08-20 15:07 -------
(In reply to comment #13)
> Created an attachment (id=16113)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16113&action=view) [edit]
> Updated doubleint-based patch. DOES NOT PASS TESTSUITE.
I meant "does not bootstrap".
Anyway. Something strange is going on. Last two patches:
bug28632_doubleint_based.patch
bug28632_tree_based.patch
are identical in their basic algorithm, but one uses trees and other uses
double_ints for intermediate calculations. I did a bootstrap with them
and on 4.3.1 both work, whereas on current-ish svn doubleint-based patch
fails.
Bootstrap with both patches was done with debugging output enabled
and OUTPUT IS THE SAME! Entire ~7Mb output has the same ranges predicted
by both patches, up to the point where gcc stage 2 is reached.
Then newly built compiles mispredicts a range and compile fails
(again only for bug28632_doubleint_based.patch).
This practically rules out that I have some silly bug
in bug28632_doubleint_based.patch which miscalculates ranges - that would make
bug28632_tree_based.patch to fail as well.
I also ran a test program which tested predictions for random (a | b)
and (a & b) and it didn't find any errors.
Looks like this problem is more difficult than I can handle.
Putting it on hold for now.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28632