[Bug target/44606] Wrong SPE floating point during computation

2010-08-31 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #5 from Kyle dot D dot Moffett at boeing dot com  2010-08-31 
14:03 ---
Created an attachment (id=21605)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21605action=view)
Further stripped testcase with problematic section identified

Ok, I've spent a bit more time fiddling with this testcase, and I believe I can
display exactly where the bug happens.  In the attached test.c file, you can
see a section like this:

  saved_r = total_r;
  saved_g = total_g;
  saved_b = total_b;
  Minify(2*x + 10, 15.0);
  save2_r = total_r;
  save2_g = total_g;
  save2_b = total_b;

The Minify() macro is supposed to add nonzero values to total_[rgb] but when
compiled with -O2 (or -O1 and a few extra optimizations) the values of
save2_[rgb] are the same as those of saved_[rgb].

I'm also attaching a Makefile I used while testing this program.  In the
Makefile I enable -O1 and then turn off every optimization pass that is not
strictly necessary to reproduce the bug.  The Makefile simply builds 2 copies
of the program, one with -O0 and one with -O2, then runs them and compares
their output.

Some kind of loop optimization or unrolling seems to be involved.  The specific
optimizations which are mandatory for the bug to show up are below, if any of
these is turned off the bug seems to go away:
  -fdce
  -fguess-branch-probability
  -fschedule-insns
  -ftree-ch
  -ftree-dominator-opts
  -ftree-loop-optimize

Cheers,
Kyle Moffett


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44606



[Bug target/44606] Wrong SPE floating point during computation

2010-08-31 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #6 from Kyle dot D dot Moffett at boeing dot com  2010-08-31 
14:04 ---
Created an attachment (id=21606)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21606action=view)
Makefile for test.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44606



[Bug target/44606] Wrong SPE floating point during computation

2010-07-16 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #4 from Kyle dot D dot Moffett at boeing dot com  2010-07-16 
18:48 ---
(In reply to comment #0)
 I attached two testcase which is stripped down graphicsmagick code.
 tc-resize2.c has a few instructions more than tc-resize.c. I belive the bug 
 is 
 the same.

I was able to get similarly erroneous results with just -O1 -fschedule-insns:
gcc -o tc0 -O0 -Wall -Wextra tc-resize.c
gcc -o tc1x -O1 -fschedule-insns -Wall -Wextra tc-resize.c
( ./tc0 ; echo -; ./tc1x; )
.19 2484.00
.21 2700.00
.23 2916.00
.24 3132.00
.26 3348.00
-
.7 954.00
.8 1050.00
.9 1146.00
.10 1242.00
.10 1338.00


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44606



[Bug target/44364] Wrong code with e500 double floating point

2010-06-21 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #47 from Kyle dot D dot Moffett at boeing dot com  2010-06-21 
15:55 ---
(In reply to comment #41)
 Created an attachment (id=20877)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20877action=view) [edit]
 e500.h and caller-save.c patch
 
 The ICE in #38 is due to a bug in caller-save.c

We've basically rebuilt everything in the PowerPCSPE Debian port now, and as
far as I can tell all of the test-cases affected by this bug are fixed by your
attachment 20877 (pr44364.diff).  Now that we've gotten further, Sebastian has
identified a new floating point bug (PR44606), but I believe we can call this
one closed.

Again, many thanks for all your help!

Cheers,
Kyle Moffett


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-08 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #33 from Kyle dot D dot Moffett at boeing dot com  2010-06-08 
06:48 ---
EGLIBC and PPL are still building; I'm heading to sleep and I'll check on them
later this morning.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-08 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #35 from Kyle dot D dot Moffett at boeing dot com  2010-06-08 
15:23 ---
Hrm, well PPL still seems to be failing the interval1 test, but I'm not sure
that one's related as the part that fails is test01float.  More info to
come shortly.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-08 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #36 from Kyle dot D dot Moffett at boeing dot com  2010-06-08 
20:34 ---
Ok, I'm pretty sure this is unrelated to this bug, but I still get one
test-failure with PPL 0.10.2.  The interval1 test fails due to the
test01float subtest, apparently due to very slightly excessive float
rounding errors (after 100 rounds of the equivalent of x = (x + (2/x)) / 2 it
approximates ~0.02% past the maximum acceptable error bounds).

The double testcase passes just fine (although with the same error bounds and
extra precision that seems perfectly reasonable).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-07 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #27 from Kyle dot D dot Moffett at boeing dot com  2010-06-07 
12:49 ---
(In reply to comment #25)
 Yes it seems the patch is not sufficient on 4.4.  On mainline the code looks
 good by inspection.  (I don't have e500 hardware to run tests on.)

If you'd like login access to one of our protoboards, just post an SSH public
key on bugzilla and we'll set up port-forwarded access to one of our Debian
buildd servers.  We're thankful for all the assistance you've been able to
provide.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-07 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #29 from Kyle dot D dot Moffett at boeing dot com  2010-06-07 
18:28 ---
Awesome!!! Both of our testcases that were failing pass with this patch
applied!

I'm not going to call it a 100% victory yet, I want to rebuild our native
compilers and build-and-run the PostgreSQL, GMP and MPFR testsuites first.

Here's hoping though! *crosses fingers*


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-07 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #30 from Kyle dot D dot Moffett at boeing dot com  2010-06-07 
18:56 ---
Ok, the cross-compiler built with this patch fails to build a native GCC for
the target with the following ICE:

../../../src/libgcc/../libdecnumber/decLibrary.c: In function 'isinfd128':
../../../src/libgcc/../libdecnumber/decLibrary.c:71: error: unrecognizable
insn: (insn 6 5 7 2 ../../../src/libgcc/../libdecnumber/decLibrary.c:68 (set
(subreg:TI (reg:TD 122 [ arg ]) 0) (reg:TI 123)) -1 (nil))
../../../src/libgcc/../libdecnumber/decLibrary.c:71: internal compiler error:
in extract_insn, at recog.c:2001


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-07 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #31 from Kyle dot D dot Moffett at boeing dot com  2010-06-08 
04:24 ---
Alan,

Now that I've corrected all of my compiler issues, your first patch (the one
quoted below) works like a charm.  I still need to do the extensive
archive-rebuild and testsuite run to verify that it completely works, but that
will take a couple days.

Looking good!

Cheers,
Kyle Moffett

(In reply to comment #28)
 /* When setting up caller-save slots (MODE == VOIDmode) ensure we
allocate space for DFmode.  Save gprs in the correct mode too.  */
 #define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \
   (TARGET_E500_DOUBLE  ((MODE) == VOIDmode || (MODE) == DFmode)   \
? DFmode \
: choose_hard_reg_mode ((REGNO), (NREGS), false))


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-07 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #32 from Kyle dot D dot Moffett at boeing dot com  2010-06-08 
05:07 ---
The first working patch (VOIDmode||DFmode) just successfully passed full GMP
and MPFR testsuites on the e500 boards.  PPL and EGLIBC are currently
rebuilding.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-06 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #21 from Kyle dot D dot Moffett at boeing dot com  2010-06-06 
15:37 ---
I was trying to strip down the testcase and try to see which optimization flags
caused it.  I started from -O2 and tried to see which -O2 flags (in addition to
O1) were needed to cause the problem.  From there I simplified the testcase as
small as I could get it and turned off as many other optimizations as possible.
 As far as I can tell, it seems to be a combination of -fcaller-saves and the
minimal CSE that -O1 always turns on (regardless of other -fno-* options).

Part of the reason for the extra -fno-* compiler options was to prevent the
compiler from moving registers around so much as I fiddled with the testcase,
since the bug is only triggered when it allocates one of the 2 doubles in a
register that is reused by one of the libgcc functions it calls.

Other than that, I'm just grasping at straws...

If somebody can debug this and fix both testcases before FreeScale gets back to
us with a fix I'll ship them a case or two of their favorite beer (or whatever
other beverage they'd prefer).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-06 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #23 from Kyle dot D dot Moffett at boeing dot com  2010-06-07 
05:36 ---
(In reply to comment #22)
 Adding the following to config/rs6000/e500.h will likely fix the bug. 
 Testing..

Oh, very nice!  Thanks for the speedy assistance on this!  I've got my own test
compiler building now; I'll let you know what the result is as soon as its
done!

Cheers,
Kyle Moffett


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-06 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #24 from Kyle dot D dot Moffett at boeing dot com  2010-06-07 
05:44 ---
Hmm, unfortunately in my preliminary testing this does not seem to fix either
testcase.

Cheers,
Kyle Moffett


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-04 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #17 from Kyle dot D dot Moffett at boeing dot com  2010-06-04 
17:24 ---
Created an attachment (id=20840)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20840action=view)
Minimal test with -O1

I've managed to shrink this down to a 44-line testcase that fails with the
options listed below.  The code is the same but the failure mode is different; 
Specifically, I get this output:
|RESET: 252.00 | 4294967296.00
|RESET: 504.00 | 4294967296.00
|RESET: 756.00 | 4294967296.00
|RESET: 1008.00 | 4294967296.00
|RESET: 1260.00 | 4294967296.00
|RESET: 1512.00 | 4294967296.00
|RESET: 1764.00 | 4294967296.00
|RESET: 2016.00 | 4294967296.00
|RESET: 2268.00 | 4294967296.00
 = 2268.00
|RESET: 2520.00 | 4294967296.00
|RESET: 2772.00 | 4294967296.00

From the code, the second floating point value on each line should be equal to
the first float from the previous line.  If I change the first (unsigned long
long) cast to a (long long) cast, the bug goes away and I see the following
(correct) output:
|RESET: 252.00 | 0.00
|RESET: 504.00 | 252.00
|RESET: 756.00 | 504.00
|RESET: 1008.00 | 756.00
|RESET: 1260.00 | 1008.00
|RESET: 1512.00 | 1260.00
|RESET: 1764.00 | 1512.00
|RESET: 2016.00 | 1764.00
|RESET: 2268.00 | 2016.00
 = 2268.00
|RESET: 2520.00 | 2268.00
|RESET: 2772.00 | 2520.00

The full list of compile options:
-pipe \
-g \
-Wall \
-fmove-loop-invariants \
-fcaller-saves \
--param max-aliased-vops=100 \
--param avg-aliased-vops=1 \
--param max-fields-for-field-sensitive=0 \
--param loop-invariant-max-bbs-in-loop=1000 \
-O \
-fno-web \
-fno-rename-registers \
-fno-unroll-loops \
-fno-peel-loops \
-fno-split-ivs-in-unroller \
-fno-peephole \
-fno-dce \
-fno-dse \
-fno-unit-at-a-time \
-fno-omit-frame-pointer \
-fno-auto-inc-dec \
-fno-cprop-registers \
-fno-dce \
-fno-defer-pop \
-fno-delayed-branch \
-fno-dse \
-fno-guess-branch-probability \
-fno-if-conversion2 \
-fno-if-conversion \
-fno-inline-small-functions \
-fno-inline-functions-called-once \
-fno-early-inlining \
-fno-ipa-pure-const \
-fno-ipa-reference \
-fno-merge-constants \
-fno-split-wide-types \
-fno-tree-builtin-call-dce \
-fno-tree-ccp \
-fno-tree-ch \
-fno-tree-copyrename \
-fno-tree-dce \
-fno-tree-dominator-opts \
-fno-tree-dse \
-fno-tree-fre \
-fno-tree-sra \
-fno-tree-ter \
-fno-merge-constants \
-fno-branch-count-reg \
-fno-function-cse \
-fno-thread-jumps \
-fno-gcse \
-fno-rerun-cse-after-loop \
-fno-cse-skip-blocks \
-fno-cse-follow-jumps


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-04 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #18 from Kyle dot D dot Moffett at boeing dot com  2010-06-04 
17:24 ---
Created an attachment (id=20841)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20841action=view)
Minimal test objdump with -O1


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #3 from Kyle dot D dot Moffett at boeing dot com  2010-06-03 
19:26 ---
(In reply to comment #0)
 So after looking at the code I saw now the following:
 1c24 __floatdidf:
 1c6c:   11 23 1a 2c evmergehi r9,r3,r3
 
 This function is touching the complete 64bit r9 register
 The code which calls it:
 
 1a40:   91 21 00 20 stw r9,32(r1)
 1a44:   4e 80 04 21 bctrl   # tell function which in turn calls
 floatdidf
 
 1a7c:   81 21 00 20 lwz r9,32(r1)
 1a80:   38 60 00 00 li  r3,0
 1a84:   7e 33 8b 78 mr  r19,r17 
 1a88:   12 49 92 e1 efdsub  r18,r9,r18
 1a8c:   10 80 92 fa efdctsiz r4,r18
 1a90:   12 49 4a 17 evmrr18,r9  
 
 So we just save the lower 32bit of r9 before calling the function and the 
 upper
 32bit are overwritten by efdsub.

Ok, here's the e500 ABI user guide:
  http://www.freescale.com/files/32bit/doc/ref_manual/E500ABIUG.pdf

According to that guide, we have the following usage of GPRs:
  Dedicated: r1 r2 r13
  Nonvolatile: r14-r31
  Volatile: r0 r3-r12

Then:
  Before a function changes the value in the upper word of any nonvolatile
general register, rn, it shall save the 64-bit value in rn in the 64-bit
general register save area 8*(32-n) bytes below the CR save area (plus any
required padding).  The 64-bit general save area shall have 8-byte alignment.

And:
  Before a function changes the value in the lower word of any nonvolatile
general register, rn, that has not already been saved in the 64-bit general
register save area, it shall save the value in the lower word of rn in the word
in the 32-bit general register save area 4*(32-n) bytes before the back chain
word of the previous frame.

So clearly the caller's assembly is wrong; it should be saving all 64-bits of
r9 (volatile gpr) first.

Cheers,
Kyle Moffett


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #4 from Kyle dot D dot Moffett at boeing dot com  2010-06-03 
20:09 ---
Ok, I have a trivial 19-line testcase that triggers the bug on my native Debian
GCC 4.4.4-2+powerpcspe1 (with PR44169 fix) with -O0 and -O3.  The compiler was
built with: --with-cpu=8548 --enable-e500_double --with-long-double-128
  In order to make it work on -O3 I had to split the double z, void
problem() and int main() into 3 separate files to prevent GCC from inlining
everything.

Compiled with:
  gcc -Wall -Wextra -Werror -ggdb3 -O0 -o testall testall.c
Output (the two main: a lines should read the same):
  main: a = 78.463000
  problem: a = 39.231500
  main: a = 39.231476

Or with:
  gcc -Wall -Wextra -Werror -ggdb3 -O3 -o test.o -c test.c
  gcc -Wall -Wextra -Werror -ggdb3 -O3 -o test2.o -c test2.c
  gcc -Wall -Wextra -Werror -ggdb3 -O3 -o test3.o -c test3.c
  gcc -Wall -Wextra -Werror -ggdb3 -O3 -o test test.o test2.o test3.o
Output:  (again, main lines should be identical)
  main: a = 78.463000
  problem: a = 39.231500
  main: a = 78.462952

As you might imagine, a bug this bad triggers testsuite failures in MPFR, GMP,
PostgreSQL, lapack, and basically everything else with a comprehensive
floating-point test-suite.

Cheers,
Kyle Moffett


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #6 from Kyle dot D dot Moffett at boeing dot com  2010-06-03 
20:21 ---
Created an attachment (id=20823)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20823action=view)
Combined trivial testcase (For -O0)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #7 from Kyle dot D dot Moffett at boeing dot com  2010-06-03 
20:22 ---
Created an attachment (id=20824)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20824action=view)
Multipart trivial testcase (For -O3)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #8 from Kyle dot D dot Moffett at boeing dot com  2010-06-03 
20:22 ---
Created an attachment (id=20825)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20825action=view)
Multipart trivial testcase (For -O3) part 2


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #9 from Kyle dot D dot Moffett at boeing dot com  2010-06-03 
20:22 ---
Created an attachment (id=20826)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20826action=view)
Multipart trivial testcase (For -O3) part 3


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #10 from Kyle dot D dot Moffett at boeing dot com  2010-06-03 
20:26 ---
Created an attachment (id=20827)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20827action=view)
Multipart trivial testcase objdump result (Built with -O0)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #11 from Kyle dot D dot Moffett at boeing dot com  2010-06-03 
20:26 ---
Created an attachment (id=20828)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20828action=view)
Multipart trivial testcase objdump result (Built with -O3)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #12 from Kyle dot D dot Moffett at boeing dot com  2010-06-03 
23:18 ---
(From update of attachment 20823)
Scratch my test cases... register asm(...) doesn't work the way I thought it
did... Sebastian's test case is the only one that I've found that works.


-- 

Kyle dot D dot Moffett at boeing dot com changed:

   What|Removed |Added

  Attachment #20823|0   |1
is obsolete||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #13 from Kyle dot D dot Moffett at boeing dot com  2010-06-04 
01:37 ---
Created an attachment (id=20829)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20829action=view)
Updated tc-lossings-floats.c

I sat down with GCC and vim for a couple hours narrowing down Sebastian's
testcase.  This file of ~100 lines exhibits the exact same problem as the
original testcase.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #14 from Kyle dot D dot Moffett at boeing dot com  2010-06-04 
01:37 ---
Created an attachment (id=20830)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20830action=view)
Updated tc-lossings-floats.objdump


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #15 from Kyle dot D dot Moffett at boeing dot com  2010-06-04 
02:17 ---
Created an attachment (id=20831)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20831action=view)
Even tinier tc-lossings-floats.c

Spent a bit more time on the testcase and made it even smaller.  The bug goes
away if I make any of the following changes:

  (1) Make counter a nonstatic local variable or iter a static global
  (2) Call dotell() directly instead of through a function pointer
  (3) Eliminate the references to frq_out-buf_start or prx_out-buf_start,
even though they are always zero.


-- 

Kyle dot D dot Moffett at boeing dot com changed:

   What|Removed |Added

  Attachment #20829|0   |1
is obsolete||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug target/44364] Wrong code with e500 double floating point

2010-06-03 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #16 from Kyle dot D dot Moffett at boeing dot com  2010-06-04 
02:17 ---
Created an attachment (id=20832)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20832action=view)
Even tinier tc-lossings-floats.objdump


-- 

Kyle dot D dot Moffett at boeing dot com changed:

   What|Removed |Added

  Attachment #20830|0   |1
is obsolete||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364



[Bug rtl-optimization/44169] Wrong code while generating TLS offsets

2010-05-20 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #7 from Kyle dot D dot Moffett at boeing dot com  2010-05-20 
12:17 ---
Created an attachment (id=20707)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20707action=view)
Assembled tc.c output from Debian-built powerpc-linux-gnuspe-gcc 4.3.4


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44169



[Bug rtl-optimization/44169] Wrong code while generating TLS offsets

2010-05-20 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #8 from Kyle dot D dot Moffett at boeing dot com  2010-05-20 
12:19 ---
Created an attachment (id=20708)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20708action=view)
Assembled tc.c output from Debian-built powerpc-linux-gnuspe-gcc 4.4.4


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44169



[Bug rtl-optimization/44169] Wrong code while generating TLS offsets

2010-05-20 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #9 from Kyle dot D dot Moffett at boeing dot com  2010-05-20 
12:29 ---
Created an attachment (id=20710)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20710action=view)
Assembled tc.c output from Debian-built powerpc-linux-gnuspe-gcc 4.4.2


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44169



[Bug rtl-optimization/44169] Wrong code while generating TLS offsets

2010-05-20 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #10 from Kyle dot D dot Moffett at boeing dot com  2010-05-20 
12:37 ---
Ok, it looks like the bug was introduced in the 4.4 branch between 4.4.2 and
4.4.4, because my old GCC 4.4.2 compiler works, but the 4.4.4 I built yesterday
after I noticed this report does not.

If needed I can spend some time to track down exactly which optimization
flag(s) cause the problem, but hopefully we've narrowed down the versions
closely enough for it to be easy to find. :-D

Cheers,
Kyle Moffett


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44169



[Bug rtl-optimization/44169] Wrong code while generating TLS offsets

2010-05-19 Thread Kyle dot D dot Moffett at boeing dot com


--- Comment #5 from Kyle dot D dot Moffett at boeing dot com  2010-05-20 
04:53 ---
I am not able to reproduce this with a cross-compiling GCC 4.4.3 or 4.4.4 built
from Debian sources.  Configuration parameters for GCC 4.4.4 were:

-v
--with-pkgversion='Debian 4.4.4-2'
--with-bugurl='file:///usr/share/doc/gcc-4.4/README.Bugs'
--prefix=/usr
--enable-shared
--enable-multiarch
--enable-linker-build-id
--with-system-zlib
--libexecdir=/usr/lib
--without-included-gettext
--enable-threads=posix
--with-gxx-include-dir=/usr/powerpc-linux-gnuspe/include/c++/4.4.4
--program-suffix=-4.4
--enable-nls
--enable-clocale=gnu
--enable-libstdcxx-debug
--enable-objc-gc
--with-cpu=8548
--enable-e500_double
--with-long-double-128
--disable-multilib
--enable-checking=release
--program-prefix=powerpc-linux-gnuspe-
--includedir=/usr/powerpc-linux-gnuspe/include
--with-headers=/usr/powerpc-linux-gnuspe/include
--with-libs=/usr/powerpc-linux-gnuspe/lib
--build=x86_64-linux-gnu
--host=x86_64-linux-gnu
--target=powerpc-linux-gnuspe
CC=gcc
build_alias=x86_64-linux-gnu
host_alias=x86_64-linux-gnu
target_alias=powerpc-linux-gnuspe
--enable-languages=c,c++,fortran,objc,obj-c++

Versions are:
  powerpc-linux-gnuspe-gcc-4.3 (Debian 4.3.4-10 with a patch to debian/rules)
4.3.4
  powerpc-linux-gnuspe-gcc-4.4 (Debian 4.4.4-2 with a patch to debian/rules)
4.4.4

The C file was compiled as follows in both cases:
  powerpc-linux-gnuspe-gcc -Werror -pthread -ftls-model=initial-exec -O2
-pthread -fPIC -DPIC tc.c -o tc.S -S -mcpu=8540 -O1 -fdump-rtl-all -c

I'm not very familiar with the RTL passes, but if somebody can tell me what
else to look for or test I'll go scrounge around to see if I can find what's
hiding the problem for me.

Cheers,
Kyle Moffett


-- 

Kyle dot D dot Moffett at boeing dot com changed:

   What|Removed |Added

 CC||Kyle dot D dot Moffett at
   ||boeing dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44169