This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Support 64 or 80 bit long double for i960


Jim Wilson wrote:

>         Jim, I thought and think about the problem.  I believe it would be nice
>         to have infrastructure to switch the long double size (and may be double
>         for processors with supporting 128 bit floating point numbers) with the
>         aid of a compiler option.  But it looks like that the fixing the problem
>         in real.c requires more one day.  So I'd prefer to make a configure
>         option and return back in the future.
>
> Are you working on this?  I just checked and see that it is still broken.
> I'd suggest just disabling the change for now.  I've attached a patch for
> comment.  If you write a configure patch, it can be re-enabled then.  It
> can also be re-enabled by hand for testing.  Meanwhile, we shouldn't leave
> it broken.
>

  I looked at this.  I estimate about week for the work for simultaneous supporting
different floating point numbers.  So I think that you are right.  I'll disable the
changes and I'll think what to do next.  Configure patch is simpler solution but
supporting different floating point numbers is more preferable with my point of
view.

>
>         By the way the documentation defines LONG_DOUBLE_TYPE_SIZE as simply C
>         expression (not preprocessor expression).  It should be fix too.  I
>         could solve the problem after 5th Febrary or may be early.
>
> The documention should only be used as a guide to help interpret the source.
> It should not be regarded as definitive.  I suspect that the few documentation
> entries have tried to get this distinction right.  And the ones that did get
> it right at first could now be wrong if the source code has changed.  I use
> grep to find these kinds of problems.
>
> Wed Feb 10 12:38:40 1999  Jim Wilson  <wilson@cygnus.com>
>
>         * i960/i960.h (OVERRIDE_OPTIONS): Warn if -mlong-double-64 is used.
>         (LONG_DOUBLE_TYPE_SIZE): Undef then unconditionally define to 96.
>
> Index: i960.h
> ===================================================================
> RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/i960/i960.h,v
> retrieving revision 1.22
> diff -p -r1.22 i960.h
> *** i960.h      1999/01/19 12:02:58     1.22
> --- i960.h      1999/02/10 20:33:02
> *************** extern int target_flags;
> *** 321,326 ****
> --- 321,329 ----
>         flag_signed_char = 1;                                   \
>         target_flags |= TARGET_FLAG_CLEAN_LINKAGE;              \
>       }                                                         \
> +   /* ??? See the LONG_DOUBLE_TYPE_SIZE definition below.  */  \
> +   if (TARGET_LONG_DOUBLE_64)                                  \
> +     warning ("The -mlong-double-64 option does not work yet.", 0);\
>     i960_initialize ();                                         \
>   }
>
> *************** extern int target_flags;
> *** 368,373 ****
> --- 371,380 ----
>   /* Width in bits of a long double.  Define to 96, and let
>      ROUND_TYPE_ALIGN adjust the alignment for speed. */
>   #define       LONG_DOUBLE_TYPE_SIZE (TARGET_LONG_DOUBLE_64 ? 64 : 96)
> +
> + /* ??? This must be a constant, because real.c and real.h test it with #if.  */
> + #undef LONG_DOUBLE_TYPE_SIZE
> + #define LONG_DOUBLE_TYPE_SIZE 96
>
>   /* Define this to set long double type size to use in libgcc2.c, which can
>      not depend on target_flags.  */



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]