From 183dc110df12ed76b1673d12aa048841ca71106a Mon Sep 17 00:00:00 2001 From: amylaar Date: Wed, 3 Nov 2010 10:45:40 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166238 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/java/ChangeLog | 8 ++++++++ gcc/java/jcf-parse.c | 7 ++++--- gcc/target.def | 16 ++++++++++++++++ gcc/targhooks.c | 13 +++++++++++++ gcc/targhooks.h | 2 ++ 6 files changed, 52 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0454a9f..1286395 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2010-11-03 Joern Rennecke + + 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 PR tree-optimization/46165 diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 41ae31c..ae89444 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,11 @@ +2010-11-03 Joern Rennecke + + 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 * lang.c (java_eh_personality): Update call to diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index e6dc44c..30f171c 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -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 @@ -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; diff --git a/gcc/target.def b/gcc/target.def index 37ba3bc..7947961 100644 --- a/gcc/target.def +++ b/gcc/target.def @@ -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, diff --git a/gcc/targhooks.c b/gcc/targhooks.c index 22bba3b..3647436 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -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 diff --git a/gcc/targhooks.h b/gcc/targhooks.h index 8762513..eeefe05 100644 --- a/gcc/targhooks.h +++ b/gcc/targhooks.h @@ -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); -- 2.7.4