[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-18 Thread joel at gcc dot gnu dot org

--- Additional Comments From joel at gcc dot gnu dot org  2005-01-18 14:14 
---
(In reply to comment #17)
 Yes, the patch in comment 15 is ok.

I just committed it.  I hope it is still OK. :)

If you think it's OK, this can be closed.

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-18 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-01-18 
14:18 ---
Subject: Bug 19379

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-01-18 14:13:23

Modified files:
gcc: ChangeLog 
gcc/config/i386: i386.c 

Log message:
2005-01-18  Joel Sherrill [EMAIL PROTECTED]

PR target/19379
* config/i386/i386.c (override_options): If the 80387 is disabled,
then do not return FP values using FP registers.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gccr1=2.7175r2=2.7176
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.c.diff?cvsroot=gccr1=1.780r2=1.781



-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-18 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-01-18 
15:43 ---
Fixed.

-- 
   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-17 Thread corsepiu at gcc dot gnu dot org

--- Additional Comments From corsepiu at gcc dot gnu dot org  2005-01-17 
16:09 ---
(In reply to comment #13)
 As for (4), what do you think the problem *is* anyway?

To me the problem is:
i386-rtems-gcc-4.0 ices when building the '-msoft-float -mtune=i386' multilib
variant.

Now the observation is, the '-soft-float -mtune=i386 -fno-fp-ret-in-387'
multilib variant to be building fine.

From this I conclude, that i386-*gcc-4.0 probably has a bug somewhere which
causes it to generate incorrect code for '-msoft-float -mtune=i386'. 

I.e. I would be satisfied if we can manage to find a way to let the
-msoft-float -mtune=i386 multilib variant imply -fno-fp-ret-in-387.

My proposals above were along the consideration of
* Users reported -fno-80387 not to be sufficient for real i386s w/o i387
* gcc-4.0 also seems to have encountered problems with it
.. so why not merge -mno-80387 and -no-fp-ret-in-387?

 It's the fact
 that fxch is marked TARGET_80387, and the only reason *that* got emitted
 is to put the return value in the right place for MASK_FLOAT_RETURN.  Duh.
Sorry, I am as much an i386 expect to be able to comment on this.

 And my suggestion is to add
 
   if (!TARGET_80387)
 target_flags = ~MASK_FLOAT_RETURNS;
 
 somewhere in the middle of override_options.  Preferably near the other 
 bits that talk about fpmath etc.
I need some more time to think about this.

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-17 Thread joel at gcc dot gnu dot org

--- Additional Comments From joel at gcc dot gnu dot org  2005-01-17 20:17 
---
I should have mentioned that I can build and install a C/C++ toolset.  If you
think this is OK, can I commit it?

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-17 Thread rth at gcc dot gnu dot org

--- Additional Comments From rth at gcc dot gnu dot org  2005-01-17 21:08 
---
Yes, the patch in comment 15 is ok.

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-13 Thread corsepiu at gcc dot gnu dot org

--- Additional Comments From corsepiu at gcc dot gnu dot org  2005-01-13 
13:31 ---
(In reply to comment #11)
 (In reply to comment #10)
 One thing that I notice about this is that -msoft-float and -mhard-float are
 no longer inverses. 
Good point. How about these alternatives:

1. Systematically substitute all occurences of MASK_80387 with
(MASK_80387|MASK_FLOAT_RETURN) in i386.h.
This would keep -msoft-float and -mno-80387, rsp. -mno-soft-float, -mhard-float
and -m80387 as synonyms.
IMO, this would be the least intrusive way of a proper fix.

2. Completely eliminate MASK_FLOAT_RETURN and to use 
MASK_80837, instead.  This would be a pretty radical way, I am not sure about
its consquences, but I don't expect it to do much harm.

3. Keep -[no-]hard-float, -m[no-]80387 and -m[no-]fp-ret-in-387 as they
currently are, but only change soft-float to (MASK_80387|MASK_FLOAT_RETURN) and
-mno-soft-float to -(MASK_80387|MASK_FLOAT_RETURN).
This would satisfy RTEMS without disturbing other targets/OSes (We'd have to
change our multilibs, but this wouldn't be an issue).
I'd consider this to be a more a hack than an actual fix ;)

4. Fix the cause of this PR. I.e. prevent GCC from generating FPU code in the
case this breakdown occurred. Unfortunately, I don't know the cause nor how to
work around it.

 Perhaps it would be better to modify override_options to
 notice when, after all options are processed, that MASK_80387 is off and then
 turn off MASK_FLOAT_RETURNS to match.
I don't understand. Could you elaborate?

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-13 Thread rth at gcc dot gnu dot org

--- Additional Comments From rth at gcc dot gnu dot org  2005-01-14 01:36 
---
I would consider (1) wrong.

I'm not sure about (2); I think at one time there was a target that put fp
return values in the integer registers even when a coprocessor was present.
But there doesn't seem to be such a target in the tree now.  Perhaps it got
purged.

I don't like (3) because that forces -mhard-float to imply MASK_FLOAT_RETURN,
which would interfere with (2) if it still existed.

As for (4), what do you think the problem *is* anyway?  It's the fact
that fxch is marked TARGET_80387, and the only reason *that* got emitted
is to put the return value in the right place for MASK_FLOAT_RETURN.  Duh.

And my suggestion is to add

  if (!TARGET_80387)
target_flags = ~MASK_FLOAT_RETURNS;

somewhere in the middle of override_options.  Preferably near the other 
bits that talk about fpmath etc.

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-12 Thread rth at gcc dot gnu dot org


-- 
   What|Removed |Added

 Status|ASSIGNED|WAITING


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-12 Thread corsepiu at gcc dot gnu dot org

--- Additional Comments From corsepiu at gcc dot gnu dot org  2005-01-12 
10:30 ---
(In reply to comment #3)
 What do you want the ABI for soft-float to be?
 As RTEMS is probably the only user of -msoft-float, you get to choose.
-msoft-float basically is just a synomym for -no-80387 (-MASK_80387 in i386.h),
so there probably are more users.

 Do you want -msoft-float to imply -mno-fp-ret-in-387, do you want to supply
 it yourself, or do you want to admit that all shipping processors have an
 fpu and/or the os has an emulator?
Neither.

The actual problem is people using RTEMS on original i386dx's for whom previous
verions of gcc had required -mtune=i386 -mno-80387 -no-fp-ret-in-387 rsp.
-mcpu=i386 -msoft-float -no-fp-in-387.

For other cpus, coupling -msoft-float with -no-fp-in-387 has proven not to be
necessary.

This all is the reason for RTEMS gcc to use this kind of multilibs:
i386-rtems4.7-gcc --print-multi-lib
.;
m486;@mtune=i486
mpentium;@mtune=pentium
mpentiumpro;@mtune=pentiumpro
k6;@mtune=k6
athlon;@mtune=athlon
soft-float;@msoft-float
soft-float/nofp;@[EMAIL PROTECTED]
m486/soft-float;@[EMAIL PROTECTED]

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-12 Thread joel at gcc dot gnu dot org

--- Additional Comments From joel at gcc dot gnu dot org  2005-01-12 12:50 
---
(In reply to comment #4)
 (In reply to comment #3)
  What do you want the ABI for soft-float to be?
  As RTEMS is probably the only user of -msoft-float, you get to choose.
 -msoft-float basically is just a synomym for -no-80387 (-MASK_80387 in 
 i386.h),
 so there probably are more users.

If you are tuly using soft-float, then the results can't be returned in the
non-existent FPU registers so I have never understood from a practical matter
why it didn't already imply avoiding returning values in FPU registers.
 
  Do you want -msoft-float to imply -mno-fp-ret-in-387, do you want to supply
  it yourself, or do you want to admit that all shipping processors have an
  fpu and/or the os has an emulator?
 Neither.

Richard gave four options.  

  (1) -msoft-float to imply -mno-fp-ret-in-387
  (2) supply it yourself (?? do you mean explicitly state -mno-fp-ret-in-387)
  (3) admit that all shipping processors have an FPU
  (4) add an FPU emulator to RTEMS

(3) is quite an assertion.  There are lots of x86 clones now and many of those
are targetted to the embedded space.  All desktop x86 CPUs do have FPUs but
all x86's do not target that space.  Even Intel still ships some no FPU x86
variants for embedded space
(http://developer.intel.com/design/intarch/intel386/index.htm).  Ignoring that,
this choice would result in us being unable to provide OS upgrades to users of
non-FPU x86 CPUs.

(4) is not likely to happen.  It hasn't been needed yet and it is unlikely a 
volunteer is going to show up just because gcc suddenly needs one after 10
years of not needing it. 

(2) I am not sure what  this means exactly but if the user has to provide 
an extra argument, it is error prone and the multilib match has to be there
anyway. 

This leaves us with (1).  If that is all that is required to fix the problem,
then (a) how hard is this to implement and (b) what is the potential impact
on user code?  RTEMS, all support code, and all application would be
recompiled with the new ABI so that is OK.  The impact would be any assembly
routines.  I doubt there are many.

 The actual problem is people using RTEMS on original i386dx's for whom 
 previous
 verions of gcc had required -mtune=i386 -mno-80387 -no-fp-ret-in-387 rsp.
 -mcpu=i386 -msoft-float -no-fp-in-387.
 
 For other cpus, coupling -msoft-float with -no-fp-in-387 has proven not to be
 necessary.

I checked the i386ex BSPs and one used 
-msoft-float -mno-fp-ret-in-387 and the other only used -msoft-float.
The pc386dx BSP uses both options.

I am willing to go with (1).  Can this be done all the time
for -msoft-float?  Just change i386.h like this:

{ soft-float, (-MASK_80387|-MASK_FLOAT_RETURNS|, N_(Do not use 
hardware fp)
},  \

Is that enough?


 This all is the reason for RTEMS gcc to use this kind of multilibs:
 i386-rtems4.7-gcc --print-multi-lib
 .;
 m486;@mtune=i486
 mpentium;@mtune=pentium
 mpentiumpro;@mtune=pentiumpro
 k6;@mtune=k6
 athlon;@mtune=athlon
 soft-float;@msoft-float
 soft-float/nofp;@[EMAIL PROTECTED]
 m486/soft-float;@[EMAIL PROTECTED]



-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-12 Thread corsepiu at gcc dot gnu dot org

--- Additional Comments From corsepiu at gcc dot gnu dot org  2005-01-12 
14:19 ---
(In reply to comment #5)
 (In reply to comment #4)
  (In reply to comment #3)
   What do you want the ABI for soft-float to be?
   As RTEMS is probably the only user of -msoft-float, you get to choose.
  -msoft-float basically is just a synomym for -no-80387 (-MASK_80387 in 
  i386.h),
  so there probably are more users.
 
 If you are tuly using soft-float, then the results can't be returned in the
 non-existent FPU registers so I have never understood from a practical matter
 why it didn't already imply avoiding returning values in FPU registers.
This is not how i386-gcc-rtems is set up until now.

   Do you want -msoft-float to imply -mno-fp-ret-in-387, do you want to 
   supply
   it yourself, or do you want to admit that all shipping processors have an
   fpu and/or the os has an emulator?
  Neither.
 
 Richard gave four options.  
 
   (1) -msoft-float to imply -mno-fp-ret-in-387
IMO, this proposal is meaningless unless
-mno-80387 also is changed to imply -mno-fp-ret-in-387.

   (2) supply it yourself (?? do you mean explicitly state 
 -mno-fp-ret-in-387)
   (3) admit that all shipping processors have an FPU
   (4) add an FPU emulator to RTEMS
 
 (3) is quite an assertion.
ACK, this is not feasible.

 (4) is not likely to happen.
Hmm? What is -msoft-float -mno-fp-ret-in-387 using, then?

 This leaves us with (1).
Cf. above.

Theoretically, letting -msoft-float imply -mno-fp-ret-in-387 should provide a
multilib variant applicable to i386dx's. 
 
  The actual problem is people using RTEMS on original i386dx's for whom 
  previous
  verions of gcc had required -mtune=i386 -mno-80387 -no-fp-ret-in-387 rsp.
  -mcpu=i386 -msoft-float -no-fp-in-387.
  
  For other cpus, coupling -msoft-float with -no-fp-in-387 has proven not to 
  be
  necessary.
 
 I checked the i386ex BSPs and one used 
 -msoft-float -mno-fp-ret-in-387
The pc386dx BSP uses this one.

 and the other only used -msoft-float.
 The pc386dx BSP uses both options.
No, the pc386 BSP uses this one.

The source code is identical, the only differnence is -mno-fp-ret-in-387

 I am willing to go with (1).  Can this be done all the time
 for -msoft-float?  Just change i386.h like this:
 
 { soft-float,   (-MASK_80387|-MASK_FLOAT_RETURNS|, N_(Do not 
 use hardware fp)
 },  \
 
 Is that enough?
To provide RTEMS with a work-around, yes, this should be sufficient.
However, cf. above. IMO, this is not sufficient for GCC.

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-12 Thread joel at gcc dot gnu dot org

--- Additional Comments From joel at gcc dot gnu dot org  2005-01-12 14:41 
---
(In reply to comment #6)
 (In reply to comment #5)
  (In reply to comment #4)
   (In reply to comment #3)
  If you are tuly using soft-float, then the results can't be returned in the
  non-existent FPU registers so I have never understood from a practical 
  matter
  why it didn't already imply avoiding returning values in FPU registers.
 This is not how i386-gcc-rtems is set up until now.

Right but there is nothing preventing it from changing and all BSPs with
recent test reports specify -mno-fp-ret-in-387 flag anyway.   Since we don't
have a simulator which handle the FP not present trap handler, this is
really the only one which can work.
 
Do you want -msoft-float to imply -mno-fp-ret-in-387, do you want to 
supply
it yourself, or do you want to admit that all shipping processors have 
an
fpu and/or the os has an emulator?
   Neither.
  
  Richard gave four options.  
  
(1) -msoft-float to imply -mno-fp-ret-in-387
 IMO, this proposal is meaningless unless
 -mno-80387 also is changed to imply -mno-fp-ret-in-387.
 
(2) supply it yourself (?? do you mean explicitly state 
  -mno-fp-ret-in-387)
(3) admit that all shipping processors have an FPU
(4) add an FPU emulator to RTEMS
  
  (3) is quite an assertion.
 ACK, this is not feasible.

I don't even think it is an accurate reflection of shipping CPUs today.

  (4) is not likely to happen.
 Hmm? What is -msoft-float -mno-fp-ret-in-387 using, then?

By FPU emulator I mean (and assume Richard means) a handler for the FPU
not present (trap #7) handler.  We don't have one so we have to eliminate
all FPU operations.  

Unfortunately, I think soft-float doesn't completely eliminate all uses of
the FPU so you have to add the no-fp-ret-in-387 argument.

  This leaves us with (1).
 Cf. above.
 
 Theoretically, letting -msoft-float imply -mno-fp-ret-in-387 should provide a
 multilib variant applicable to i386dx's. 

That's what I think and it gives us exactly what BSPs are specifying now.
It looks like in practical terms, when you really need soft-float, you need
no-fp-ret-in-i387 since you are saying there is no i387 and you are 
emulating one via a trap handler.
  
   The actual problem is people using RTEMS on original i386dx's for whom
previous
   verions of gcc had required -mtune=i386 -mno-80387 -no-fp-ret-in-387 rsp.
   -mcpu=i386 -msoft-float -no-fp-in-387.
   
   For other cpus, coupling -msoft-float with -no-fp-in-387 has proven not 
   to be
   necessary.
  
  I checked the i386ex BSPs and one used 
  -msoft-float -mno-fp-ret-in-387
 The pc386dx BSP uses this one.
 
  and the other only used -msoft-float.
  The pc386dx BSP uses both options.
 No, the pc386 BSP uses this one.
 
 The source code is identical, the only differnence is -mno-fp-ret-in-387
 
  I am willing to go with (1).  Can this be done all the time
  for -msoft-float?  Just change i386.h like this:
  
  { soft-float, (-MASK_80387|-MASK_FLOAT_RETURNS|, N_(Do not 
  use hardware fp)
  },  \
  
  Is that enough?
 To provide RTEMS with a work-around, yes, this should be sufficient.
 However, cf. above. IMO, this is not sufficient for GCC.

Ignoring my syntax error, in the typing above.  Richard has said RTEMS is
the only target who cares about soft-float.  If this is a workable 
solution, then I say we go for it.  I am trying it now and will report in.

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-12 Thread corsepiu at gcc dot gnu dot org

--- Additional Comments From corsepiu at gcc dot gnu dot org  2005-01-12 
15:02 ---
(In reply to comment #7)
 (In reply to comment #6)

   If you are tuly using soft-float, then the results can't be returned in 
   the
   non-existent FPU registers so I have never understood from a practical 
   matter
   why it didn't already imply avoiding returning values in FPU registers.
  This is not how i386-gcc-rtems is set up until now.
 
 Right but there is nothing preventing it from changing and all BSPs with
 recent test reports specify -mno-fp-ret-in-387 flag anyway.

 Unfortunately, I think soft-float doesn't completely eliminate all uses of
 the FPU so you have to add the no-fp-ret-in-387 argument.

True, but ... -msoft-float == -mno-80387

The RTEMS user using the i386dx had proven this not to work on original i386dx
w/o i387.

However, he has proven -msoft-float -mno-fp-ret-in-387 to work for him.

= IMO, the actual fix would be to merge MASK_FLOAT_RETURNS into MASK_80387 and
to abandon MASK_FLOAT_RETURNS.

 Richard has said RTEMS is
 the only target who cares about soft-float.
I don't agree to his statement.

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-12 Thread rth at gcc dot gnu dot org

--- Additional Comments From rth at gcc dot gnu dot org  2005-01-12 19:47 
---
In reply to comment #5:

Perhaps I am out of touch with what's extant in the embedded space.
I havn't been paid to care about that in quite some time.  I'll defer.

Using -MASK_80387|-MASK_FLOAT_RETURNS is incorrect.  It should
be -(MASK_80387|MASK_FLOAT_RETURNS).  I agree with Ralf's later
comment that -mno-80387 and -msoft-float should probably stay in
sync.  Though of course -msoft-float doesn't really mean as much
as it sounds like it ought in conjunction with -mfpmath.

In reply to comment #7:

Yes, I did mean trap #7 handler for an fpu emulator.  Though of
course there are different levels of emulation.  One thing that
has been done before for MIPS is to provide a trap handler, but
only implement the move instructions.  This allows the ABI to
remain unchanged by pretending that the appropriate registers
exist, but not having to incur most of the overhead for trapping
for all arithmetic instructions.

Since RTEMS is multilibed, this is much less of an advantage.

In any case, Joel, would you please take ownership of this bug
and see it through?  You're the one that would have to be doing
the RTEMS testing anyway...

-- 
   What|Removed |Added

 AssignedTo|rth at gcc dot gnu dot org  |unassigned at gcc dot gnu
   ||dot org
 Status|WAITING |NEW


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-12 Thread joel at gcc dot gnu dot org

--- Additional Comments From joel at gcc dot gnu dot org  2005-01-13 01:44 
---
(In reply to comment #9)
 In reply to comment #5:
 
 Perhaps I am out of touch with what's extant in the embedded space.
 I havn't been paid to care about that in quite some time.  I'll defer.

It is hard to keep up with all the new CPUs. Unfortunately, it  
isn't always about what is still recommended for new
design.  Old stuff lives on forever and I hate to see it become
unsupported.

 Using -MASK_80387|-MASK_FLOAT_RETURNS is incorrect.  It should
 be -(MASK_80387|MASK_FLOAT_RETURNS).  I agree with Ralf's later
 comment that -mno-80387 and -msoft-float should probably stay in
 sync.

How does this look?

Index: i386.h
===
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.h,v
retrieving revision 1.417
diff -u -r1.417 i386.h
--- i386.h  11 Jan 2005 21:33:13 -  1.417
+++ i386.h  13 Jan 2005 01:41:28 -
@@ -333,9 +333,11 @@
 
 #define TARGET_SWITCHES
  \
 { { 80387,MASK_80387, N_(Use hardware fp) }, \
-  { no-80387,-MASK_80387, N_(Do not use hardware 
fp) },  \
+  { no-80387,-(MASK_80387|MASK_FLOAT_RETURNS), \
+ N_(Do not use hardware fp) },  \
   { hard-float,   MASK_80387, N_(Use hardware fp) }, \
-  { soft-float,  -MASK_80387, N_(Do not use hardware fp) },  \
+  { soft-float,  -(MASK_80387|MASK_FLOAT_RETURNS), \
+N_(Do not use hardware fp) },  \
   { no-soft-float,MASK_80387, N_(Use hardware fp) }, \
   { 386,  0,  /*Deprecated.*/},  \
   { 486,  0,  /*Deprecated.*/},  \

  Though of course -msoft-float doesn't really mean as much
 as it sounds like it ought in conjunction with -mfpmath.

No it doesn't but at least it looks like the code that parses those 
arguments will correctly complain if you try to use it with
soft-float or no-387 set.

 In reply to comment #7:
 
 Yes, I did mean trap #7 handler for an fpu emulator.  Though of
 course there are different levels of emulation.  One thing that
 has been done before for MIPS is to provide a trap handler, but
 only implement the move instructions.  This allows the ABI to
 remain unchanged by pretending that the appropriate registers
 exist, but not having to incur most of the overhead for trapping
 for all arithmetic instructions.

I had thought this might be how some did it.  But why when the
entire store could just as easily been avoided by the compiler?
 
 Since RTEMS is multilibed, this is much less of an advantage.

Exactly.  We will add a multilib for a performance advantage 
in addition to an instruction mismatch.

 In any case, Joel, would you please take ownership of this bug
 and see it through?  You're the one that would have to be doing
 the RTEMS testing anyway...

As long as you promise to review it. :)

I think the above patch is very close anyway.


-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-12 Thread rth at gcc dot gnu dot org

--- Additional Comments From rth at gcc dot gnu dot org  2005-01-13 01:51 
---
(In reply to comment #10)
{ hard-float, MASK_80387, N_(Use hardware fp) }, \
 -  { soft-float,-MASK_80387, N_(Do not use hardware fp) },  \
 +  { soft-float,-(MASK_80387|MASK_FLOAT_RETURNS), \
 +N_(Do not use hardware fp) },  \

One thing that I notice about this is that -msoft-float and -mhard-float are
no longer inverses.  Perhaps it would be better to modify override_options to
notice when, after all options are processed, that MASK_80387 is off and then
turn off MASK_FLOAT_RETURNS to match.

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-11 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-01-11 
17:01 ---
This shows up in another bug too, see PR 19307 which uses -msse2 -mno-80387 
but I assume that 
this is the same bug.

-- 
   What|Removed |Added

 CC||rth at gcc dot gnu dot org
  BugsThisDependsOn||19307
  Component|bootstrap   |target
   Keywords||ice-on-valid-code
Summary|ICE during build of newlib's|[4.0 Regression] ICE during
   |e_atan2.c when soft-float   |build of newlib's e_atan2.c
   ||when soft-float
   Target Milestone|--- |4.0.0


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-11 Thread joel at gcc dot gnu dot org

--- Additional Comments From joel at gcc dot gnu dot org  2005-01-11 23:19 
---
Created an attachment (id=7932)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=7932action=view)
test case

This is the preprocessed output of newlib's e_atan2.c.  I cut out the cpp
directives and bzip'ed it.  

It does fail with the native x86 Linux gcc 4.0-20050109.  Please check if it is
the same as 19307 and update PRs/targets/cc's as you feel necessary.  

IMO this is important.  It breaks one of the most important targets for RTEMS.

-- 


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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-11 Thread rth at gcc dot gnu dot org


-- 
Bug 19379 depends on bug 19307, which changed state.

Bug 19307 Summary: [4.0 Regression] ICE with -msse2 -mno-80387
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19307

   What|Old Value   |New Value

 Status|NEW |RESOLVED
 Resolution||WORKSFORME

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


[Bug target/19379] [4.0 Regression] ICE during build of newlib's e_atan2.c when soft-float

2005-01-11 Thread rth at gcc dot gnu dot org

--- Additional Comments From rth at gcc dot gnu dot org  2005-01-12 00:28 
---
Well, you have a problem.  What do you want the ABI for soft-float to be?
As RTEMS is probably the only user of -msoft-float, you get to choose.

Do you want -msoft-float to imply -mno-fp-ret-in-387, do you want to supply
it yourself, or do you want to admit that all shipping processors have an
fpu and/or the os has an emulator?

There really aren't many other options.

-- 
   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |rth at gcc dot gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-01-12 00:28:29
   date||


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