This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug ipa/65028] [5 Regression] 450.soplex in SPEC CPU 2006 is miscompiled
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 18 Feb 2015 21:21:11 +0000
- Subject: [Bug ipa/65028] [5 Regression] 450.soplex in SPEC CPU 2006 is miscompiled
- Auto-submitted: auto-generated
- References: <bug-65028-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65028
--- Comment #37 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Jan Hubicka from comment #36)
> Hi,
> I do not really see the reason for wrong code, but the merging logic seems
> weird for me. There is no merging done when we get two different alignments
> and also we seem to immediately drop lattice to bottom when the incomming
> parameter alignment has no .known bit set. This means we do pesimistic
> propagation.
>
> I..e in testcase
>
> void *b;
> __attribute__ ((noinline))
> static void a (void *a)
> {
> memcpy (a,b,1000000);
> }
> static void aa (void *a) __attribute__ ((alias("a")));
>
> tt(void)
> {
> int i[10000];
> short c;
>
> aa(&c);
> a(i);
> }
>
> We end up with algnment unkonwn instead of a. (did not managed to reproduce
> the wrong alignment here). What about the following:
Can you upload the patch as an attachment so that I can try it on x32? Thanks.