OSDN Git Service

* config/ia64/ia64.h (no-inline-float-divide): New option.
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Feb 2004 17:17:01 +0000 (17:17 +0000)
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Feb 2004 17:17:01 +0000 (17:17 +0000)
* config/ia64/ia64.h (no-inline-int-divide): New option.
* config/ia64/ia64.h (no-inline-sqrt): New option.
(TARGET_DEFAULT): Add MASK_INLINE_FLOAT_DIV_THR to define.
* config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
* config/ia64/ia64.c (ia64_override_options): Modify error
checking for inlined division/sqrt.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78569 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/ia64/hpux.h
gcc/config/ia64/ia64.c
gcc/config/ia64/ia64.h

index c10e77d..4f88a8b 100644 (file)
@@ -1,3 +1,13 @@
+2004-02-27  Steve Ellcey  <sje@cup.hp.com>
+
+       * config/ia64/ia64.h (no-inline-float-divide): New option.
+       * config/ia64/ia64.h (no-inline-int-divide): New option.
+       * config/ia64/ia64.h (no-inline-sqrt): New option.
+       (TARGET_DEFAULT): Add MASK_INLINE_FLOAT_DIV_THR to define.
+       * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
+       * config/ia64/ia64.c (ia64_override_options): Modify error
+       checking for inlined division/sqrt.
+
 2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>
 
        * bb-reorder.c, cfgbuild.c, diagnostic.c, explow.c, profile.c,
index ecf1768..c6a7d15 100644 (file)
@@ -105,7 +105,8 @@ do {                                                        \
 #define JMP_BUF_SIZE  (8 * 76)
 
 #undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_DWARF2_ASM | MASK_BIG_ENDIAN | MASK_ILP32)
+#define TARGET_DEFAULT \
+  (MASK_DWARF2_ASM | MASK_BIG_ENDIAN | MASK_ILP32 | MASK_INLINE_FLOAT_DIV_THR)
 
 /* This needs to be set to force structure arguments with a single
    field to be treated as structures and not as the type of their
index 057e985..0e61902 100644 (file)
@@ -4751,20 +4751,53 @@ ia64_override_options (void)
 
   if (TARGET_INLINE_FLOAT_DIV_LAT && TARGET_INLINE_FLOAT_DIV_THR)
     {
-      warning ("cannot optimize floating point division for both latency and throughput");
-      target_flags &= ~MASK_INLINE_FLOAT_DIV_THR;
+      if ((target_flags_explicit & MASK_INLINE_FLOAT_DIV_LAT)
+          && (target_flags_explicit & MASK_INLINE_FLOAT_DIV_THR))
+       {
+         warning ("cannot optimize floating point division for both latency and throughput");
+         target_flags &= ~MASK_INLINE_FLOAT_DIV_THR;
+       }
+      else 
+       {
+         if (target_flags_explicit & MASK_INLINE_FLOAT_DIV_THR)
+           target_flags &= ~MASK_INLINE_FLOAT_DIV_LAT;
+         else
+           target_flags &= ~MASK_INLINE_FLOAT_DIV_THR;
+       }
     }
 
   if (TARGET_INLINE_INT_DIV_LAT && TARGET_INLINE_INT_DIV_THR)
     {
-      warning ("cannot optimize integer division for both latency and throughput");
-      target_flags &= ~MASK_INLINE_INT_DIV_THR;
+      if ((target_flags_explicit & MASK_INLINE_INT_DIV_LAT)
+          && (target_flags_explicit & MASK_INLINE_INT_DIV_THR))
+       {
+         warning ("cannot optimize integer division for both latency and throughput");
+         target_flags &= ~MASK_INLINE_INT_DIV_THR;
+       }
+      else 
+       {
+         if (target_flags_explicit & MASK_INLINE_INT_DIV_THR)
+           target_flags &= ~MASK_INLINE_INT_DIV_LAT;
+         else
+           target_flags &= ~MASK_INLINE_INT_DIV_THR;
+       }
     }
 
   if (TARGET_INLINE_SQRT_LAT && TARGET_INLINE_SQRT_THR)
     {
-      warning ("cannot optimize square root for both latency and throughput");
-      target_flags &= ~MASK_INLINE_SQRT_THR;
+      if ((target_flags_explicit & MASK_INLINE_SQRT_LAT)
+          && (target_flags_explicit & MASK_INLINE_SQRT_THR))
+       {
+         warning ("cannot optimize square root for both latency and throughput");
+         target_flags &= ~MASK_INLINE_SQRT_THR;
+       }
+      else 
+       {
+         if (target_flags_explicit & MASK_INLINE_SQRT_THR)
+           target_flags &= ~MASK_INLINE_SQRT_LAT;
+         else
+           target_flags &= ~MASK_INLINE_SQRT_THR;
+       }
     }
 
   if (TARGET_INLINE_SQRT_LAT)
index 754b05c..24e1477 100644 (file)
@@ -203,14 +203,21 @@ extern int ia64_tls_size;
       N_("Generate inline floating point division, optimize for latency") },\
   { "inline-float-divide-max-throughput", MASK_INLINE_FLOAT_DIV_THR,   \
       N_("Generate inline floating point division, optimize for throughput") },\
+  { "no-inline-float-divide",                                          \
+      -(MASK_INLINE_FLOAT_DIV_LAT|MASK_INLINE_FLOAT_DIV_THR),          \
+      N_("Do not inline floating point division") },                   \
   { "inline-int-divide-min-latency", MASK_INLINE_INT_DIV_LAT,          \
       N_("Generate inline integer division, optimize for latency") },  \
   { "inline-int-divide-max-throughput", MASK_INLINE_INT_DIV_THR,       \
       N_("Generate inline integer division, optimize for throughput") },\
+  { "no-inline-int-divide", -(MASK_INLINE_INT_DIV_LAT|MASK_INLINE_INT_DIV_THR),        \
+      N_("Do not inline integer division") },                          \
   { "inline-sqrt-min-latency", MASK_INLINE_SQRT_LAT,                   \
       N_("Generate inline square root, optimize for latency") },       \
   { "inline-sqrt-max-throughput", MASK_INLINE_SQRT_THR,                        \
       N_("Generate inline square root, optimize for throughput") },     \
+  { "no-inline-sqrt", -(MASK_INLINE_SQRT_LAT|MASK_INLINE_SQRT_THR),    \
+      N_("Do not inline square root") },                               \
   { "dwarf2-asm",      MASK_DWARF2_ASM,                                \
       N_("Enable Dwarf 2 line debug info via GNU as")},                        \
   { "no-dwarf2-asm",   -MASK_DWARF2_ASM,                               \
@@ -227,7 +234,7 @@ extern int ia64_tls_size;
 /* Default target_flags if no switches are specified  */
 
 #ifndef TARGET_DEFAULT
-#define TARGET_DEFAULT MASK_DWARF2_ASM
+#define TARGET_DEFAULT (MASK_DWARF2_ASM | MASK_INLINE_FLOAT_DIV_THR)
 #endif
 
 #ifndef TARGET_CPU_DEFAULT