PR bootstrap/44335
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 Nov 2010 10:45:40 +0000 (10:45 +0000)
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 Nov 2010 10:45:40 +0000 (10:45 +0000)
gcc:
* targhooks.c (targhook_words_big_endian): New function.
(targhook_float_words_big_endian): Likewise.
* targhooks.h (targhook_words_big_endian): Declare.
(targhook_float_words_big_endian): Likewise.
* target.def (words_big_endian, float_words_big_endian): New hooks.
gcc/java:
* jfc-parse.c (target.h): Include.
(handle_constant): Use targetm.words_big_endian and
targetm.float_words_big_endian.
(get_constant): Use targetm.float_words_big_endian.

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

gcc/ChangeLog
gcc/java/ChangeLog
gcc/java/jcf-parse.c
gcc/target.def
gcc/targhooks.c
gcc/targhooks.h

index 0454a9f..1286395 100644 (file)
@@ -1,3 +1,12 @@
+2010-11-03  Joern Rennecke  <joern.rennecke@embecosm.com>
+
+       PR bootstrap/44335
+       * targhooks.c (targhook_words_big_endian): New function.
+       (targhook_float_words_big_endian): Likewise.
+       * targhooks.h (targhook_words_big_endian): Declare.
+       (targhook_float_words_big_endian): Likewise.
+       * target.def (words_big_endian, float_words_big_endian): New hooks.
+
 2010-11-03  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/46165
index 41ae31c..ae89444 100644 (file)
@@ -1,3 +1,11 @@
+2010-11-03  Joern Rennecke  <joern.rennecke@embecosm.com>
+
+       PR bootstrap/44335
+       * jfc-parse.c (target.h): Include.
+       (handle_constant): Use targetm.words_big_endian and
+       targetm.float_words_big_endian.
+       (get_constant): Use targetm.float_words_big_endian.
+
 2010-10-13  Richard Henderson  <rth@redhat.com>
 
        * lang.c (java_eh_personality): Update call to
index e6dc44c..30f171c 100644 (file)
@@ -43,6 +43,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "cgraph.h"
 #include "vecprim.h"
 #include "bitmap.h"
+#include "target.h"
 
 #ifdef HAVE_LOCALE_H
 #include <locale.h>
@@ -555,12 +556,12 @@ handle_constant (JCF *jcf, int index, enum cpool_tag purpose)
 
     case CONSTANT_Long:
       index = handle_long_constant (jcf, cpool, CONSTANT_Long, index,
-                                   WORDS_BIG_ENDIAN);
+                                   targetm.words_big_endian ());
       break;
       
     case CONSTANT_Double:
       index = handle_long_constant (jcf, cpool, CONSTANT_Double, index,
-                                   FLOAT_WORDS_BIG_ENDIAN);
+                                   targetm.float_words_big_endian ());
       break;
 
     case CONSTANT_Float:
@@ -1071,7 +1072,7 @@ get_constant (JCF *jcf, int index)
        hi = JPOOL_UINT (jcf, index);
        lo = JPOOL_UINT (jcf, index+1);
 
-       if (FLOAT_WORDS_BIG_ENDIAN)
+       if (targetm.float_words_big_endian ())
          buf[0] = hi, buf[1] = lo;
        else
          buf[0] = lo, buf[1] = hi;
index 37ba3bc..7947961 100644 (file)
@@ -1141,6 +1141,22 @@ DEFHOOK
  bool, (const_tree record_type),
  hook_bool_const_tree_false)
 
+/* For now this is only an interface to WORDS_BIG_ENDIAN for
+   target-independent code like the front ends, need performance testing
+   before switching completely to the target hook.  */
+DEFHOOK_UNDOC
+(words_big_endian,
+ "",
+ bool, (void),
+ targhook_words_big_endian)
+
+/* Likewise for FLOAT_WORDS_BIG_ENDIAN.  */
+DEFHOOK_UNDOC
+(float_words_big_endian,
+ "",
+ bool, (void),
+ targhook_float_words_big_endian)
+
 /* True if the target supports decimal floating point.  */
 DEFHOOK
 (decimal_float_supported_p,
index 22bba3b..3647436 100644 (file)
@@ -425,6 +425,19 @@ default_scalar_mode_supported_p (enum machine_mode mode)
     }
 }
 
+/* Make some target macros useable by target-independent code.  */
+bool
+targhook_words_big_endian (void)
+{
+  return !!WORDS_BIG_ENDIAN;
+}
+
+bool
+targhook_float_words_big_endian (void)
+{
+  return !!FLOAT_WORDS_BIG_ENDIAN;
+}
+
 /* True if the target supports decimal floating point.  */
 
 bool
index 8762513..eeefe05 100644 (file)
@@ -68,6 +68,8 @@ extern bool default_print_operand_punct_valid_p (unsigned char);
 extern bool default_asm_output_addr_const_extra (FILE *, rtx);
 
 extern bool default_scalar_mode_supported_p (enum machine_mode);
+extern bool targhook_words_big_endian (void);
+extern bool targhook_float_words_big_endian (void);
 extern bool default_decimal_float_supported_p (void);
 extern bool default_fixed_point_supported_p (void);