re PR bootstrap/44335 (gcc-4.6-20100529 java bootstrap failure on arm-linux-gnueabi)
authorJoern Rennecke <joern.rennecke@embecosm.com>
Wed, 3 Nov 2010 10:45:40 +0000 (10:45 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Wed, 3 Nov 2010 10:45:40 +0000 (10:45 +0000)
PR bootstrap/44335
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.

From-SVN: r166238

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

index 0454a9fee826e7ce86850ae65c78a4bd8f2d77a5..1286395ace4b3bdd7075a1d45ec7d78820be4916 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 41ae31c159f00872b86e74a1b3b8c1c9db1de696..ae89444eb1e9f03134a1c54d63dcdb9bac2bdfde 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 e6dc44c1d0ffef91ab4ce678dd43cf4fd71d2e30..30f171cdc905cd8a502a5f99c5876163b503fecb 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 37ba3bc620e8c3ae39e6b161364b2d831323ac0c..7947961bf9e0ac62064d7aff043a97a847890b34 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 22bba3b33bc1d225729a9c00692e07ac9ae3fbed..36474367134e89487e249593b72f68700b6b851e 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 87625137de35b161068f93e9936bb7a3ec6eb89d..eeefe05d043fa81aec4d5e70a29fe31f78e13c12 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);