ia64.c (hfa_element_mode): Don't allow 128 bit floats in HFAs.
authorSteve Ellcey <sje@cup.hp.com>
Wed, 23 Oct 2002 18:18:31 +0000 (18:18 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Wed, 23 Oct 2002 18:18:31 +0000 (18:18 +0000)
* config/ia64/ia64.c (hfa_element_mode): Don't allow 128 bit floats
in HFAs.

From-SVN: r58464

gcc/ChangeLog
gcc/config/ia64/ia64.c

index 20f3b347390dc142f592c3eab2b4a2277fe79875..96011b32c4c8612dc70a235154550bb3a6942ac2 100644 (file)
@@ -1,3 +1,8 @@
+2002-10-23  Steve Ellcey  <sje@cup.hp.com>
+
+       * config/ia64/ia64.c (hfa_element_mode): Don't allow 128 bit floats
+       in HFAs.
+
 2002-10-23  Richard Henderson  <rth@redhat.com>
 
        * config/alpha/alpha.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): True.
index 35db34b59864967367757b276710746402edfbdf..a238507c922085f8019540cc8234dc1e1140600d 100644 (file)
@@ -3125,17 +3125,17 @@ hfa_element_mode (type, nested)
         gcc's COMPLEX_TYPEs as HFAs.  We need to exclude the integral complex
         types though.  */
     case COMPLEX_TYPE:
-      if (GET_MODE_CLASS (TYPE_MODE (type)) == MODE_COMPLEX_FLOAT)
+      if (GET_MODE_CLASS (TYPE_MODE (type)) == MODE_COMPLEX_FLOAT
+         && (TYPE_MODE (type) != TCmode || INTEL_EXTENDED_IEEE_FORMAT))
        return mode_for_size (GET_MODE_UNIT_SIZE (TYPE_MODE (type))
                              * BITS_PER_UNIT, MODE_FLOAT, 0);
       else
        return VOIDmode;
 
     case REAL_TYPE:
-      /* ??? Should exclude 128-bit long double here.  */
       /* We want to return VOIDmode for raw REAL_TYPEs, but the actual
         mode if this is contained within an aggregate.  */
-      if (nested)
+      if (nested && (TYPE_MODE (type) != TFmode || INTEL_EXTENDED_IEEE_FORMAT))
        return TYPE_MODE (type);
       else
        return VOIDmode;