re PR bootstrap/44335 (gcc-4.6-20100529 java bootstrap failure on arm-linux-gnueabi)

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
This commit is contained in:
Joern Rennecke 2010-11-03 10:45:40 +00:00 committed by Joern Rennecke
parent 43236c265b
commit 2e681adf5d
6 changed files with 52 additions and 3 deletions

View 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

View 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

View 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;

View 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,

View 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

View 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);