Bug 33290 - [4.3 Regression] gcc.c-torture/execute/930921-1.c fails at -O1 and above now
Summary: [4.3 Regression] gcc.c-torture/execute/930921-1.c fails at -O1 and above now
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 4.3.0
: P3 normal
Target Milestone: 4.3.0
Assignee: rsandifo@gcc.gnu.org
Keywords: ice-on-valid-code
Depends on:
Reported: 2007-09-03 11:15 UTC by Andrew Pinski
Modified: 2007-09-03 15:36 UTC (History)
2 users (show)

See Also:
Target: powerpc-*-* (32bits)
Known to work:
Known to fail:
Last reconfirmed:

Proposed patch (351 bytes, patch)
2007-09-03 12:04 UTC, rsandifo@gcc.gnu.org
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Pinski 2007-09-03 11:15:39 UTC
+++ This bug was initially created as a clone of Bug #33283 +++

[18:22] < apinski>  /home/apinski/src/local/gcc/gcc/testsuite/gcc.c-torture/execute/930921-1.c:5: error: could not split insn^M
[18:22] < apinski> new failure
[18:23] < apinski> on ppc-linux-gnu
[18:23] < apinski> between 127935 and 128000

[18:32] < Rhyolite> I guess it could be due to my predicate change
[18:33] < apinski> this was after that
[18:33] < Rhyolite> okay, phew
[18:33] < apinski> paired support was inbetween that though
[18:33] < Rhyolite> sigh
[18:34] < Rhyolite> Revital said that she regression tested
[18:34] < apinski> but also Sandra's regclass changes
[18:34] < apinski> and some optabs changes
[18:34] < apinski> so it could be either of those three

And then from PR 33277 #3:
Fromp http://gcc.gnu.org/ml/gcc-testresults/, looking at the results from
"regress", it can be narrowed between 127961 (working) and 127997 (non
working).  Note that the last change of final.c is 127941 (outside the range). 
From an uneducated guess, I'l say 127989, but I may be completely wrong.

And from #4:
From looking closer to the changes, the scheduler changes is not
likely because this happens at -O1 :)  I am more thinking it was:
2007-08-31  Richard Sandiford  <richard@codesourcery.com>

Which changed optabs which is part of the expansion.  The IV change
could not have cause this issue as there is no loop in that function
so the last change would be the optabs change.

Note I am going to start cloning this bug until all the offtopic stuff stops being added.
Comment 1 rsandifo@gcc.gnu.org 2007-09-03 12:04:44 UTC
Created attachment 14152 [details]
Proposed patch

It was indeed my fault, sorry.  When doing a 32x32->64 multiplication,
CONST_INTs are interpreted in the target mode (DImode).  We were forcing
such a CONST_INT into an SImode register without sign-extending it first.

The attached patch seems to fix the testcase.  I'm testing on x86_64-linux-gnu.
Could someone with access to PowerPC GNU/Linux or Darwin please test it too?
I could do before-and-after tests for powerpc-eabisim, but it'd probably
take longer.
Comment 2 Andreas Tobler 2007-09-03 13:05:42 UTC
Looks ok on PowerPC Darwin. 16 passes. I tested on top of 128028.
Comment 3 Dominique d'Humieres 2007-09-03 13:10:02 UTC
The test case works:

[karma] gcc/darwin_buildw% ../gcc4.3w/bin/gcc -O ../gcc-4.3-work/gcc/testsuite/gcc.c-torture/execute/930921-1.c
../gcc-4.3-work/gcc/testsuite/gcc.c-torture/execute/930921-1.c: In function 'main':
../gcc-4.3-work/gcc/testsuite/gcc.c-torture/execute/930921-1.c:13: warning: incompatible implicit declaration of built-in function 'abort'
../gcc-4.3-work/gcc/testsuite/gcc.c-torture/execute/930921-1.c:14: warning: incompatible implicit declaration of built-in function 'exit'
[karma] gcc/darwin_buildw% a.out 
[karma] gcc/darwin_buildw% ../gcc4.3w/bin/gcc -O -m64 ../gcc-4.3-work/gcc/testsuite/gcc.c-torture/execute/930921-1.c
../gcc-4.3-work/gcc/testsuite/gcc.c-torture/execute/930921-1.c: In function 'main':
../gcc-4.3-work/gcc/testsuite/gcc.c-torture/execute/930921-1.c:13: warning: incompatible implicit declaration of built-in function 'abort'
../gcc-4.3-work/gcc/testsuite/gcc.c-torture/execute/930921-1.c:14: warning: incompatible implicit declaration of built-in function 'exit'
[karma] gcc/darwin_buildw% a.out

I am starting the gcc test suite, allow for 2+ hours.


Comment 4 Dominique d'Humieres 2007-09-03 15:32:55 UTC
Test Run By dominiq on Mon Sep  3 15:14:54 2007
Native configuration is powerpc-apple-darwin8

		=== gcc tests ===

Schedule of variations:

XPASS: gcc.dg/20020103-1.c scan-assembler-not LC[0-9]
FAIL: gcc.dg/builtins-61.c scan-tree-dump return 0.0
FAIL: gcc.dg/initpri1.c execution test
FAIL: gcc.dg/memcpy-1.c scan-tree-dump-times nasty_local 0
FAIL: gcc.dg/ssp-2.c (test for excess errors)
XPASS: gcc.dg/tree-ssa/update-threading.c scan-tree-dump-times Invalid sum 0
FAIL: gcc.dg/vect/section-anchors-pr27770.c (test for excess errors)
FAIL: gcc.dg/vect/section-anchors-vect-69.c (test for excess errors)
FAIL: gcc.dg/vect/section-anchors-vect-69.c scan-tree-dump-times Alignment of access forced using peeling 4
FAIL: gcc.target/powerpc/parity-1.c scan-assembler popcntb
FAIL: gcc.target/powerpc/popcount-1.c scan-assembler popcntb
FAIL: gcc.target/powerpc/stabs-attrib-vect-darwin.c scan-assembler .stabs.*vi:\\(0,[0-9]+\\)=@V

		=== gcc Summary ===

# of expected passes            46198
# of unexpected failures        10
# of unexpected successes       2
# of expected failures          169
# of untested testcases         35
# of unsupported tests          412
/opt/gcc/darwin_buildw/gcc/xgcc  version 4.3.0 20070903 (experimental) (GCC) 

That's the "normal" unexpected failures/successes on Darwin8.

Comment 5 rsandifo@gcc.gnu.org 2007-09-03 15:36:07 UTC
Subject: Bug 33290

Author: rsandifo
Date: Mon Sep  3 15:35:52 2007
New Revision: 128048

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=128048
	PR middle-end/33290
	* optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
	before forcing them into a register.


Comment 6 rsandifo@gcc.gnu.org 2007-09-03 15:36:42 UTC
Thanks to Andreas and Dominique for the testing.  Now applied to 4.3.
Sorry to everyone for the breakage.