diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2014-07-17 02:03:52 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2014-07-17 02:03:52 +0000 |
commit | ab4e53feba14df1de389b194b095f7932a8ca9ee (patch) | |
tree | 0c35ab6538fcb96aedfb1eebc55dd4b86b30162c /gcc/config/cris/cris-protos.h | |
parent | 3a213afbb56ec69625a816642391f0b7294b797a (diff) | |
download | gcc-ab4e53feba14df1de389b194b095f7932a8ca9ee.tar.gz |
re PR target/61737 (ICE when building libgcc for cris cross-compiler)
PR target/61737.
* config/cris/cris.c (TARGET_LEGITIMATE_CONSTANT_P)
(TARGET_CANNOT_FORCE_CONST_MEM): Define.
(cris_cannot_force_const_mem, cris_legitimate_constant_p): New
functions.
(cris_print_index, cris_print_operand, cris_constant_index_p)
(cris_side_effect_mode_ok): Replace CONSTANT_P with CRIS_CONSTANT_P.
(cris_address_cost): Ditto last CONSTANT_P.
(cris_symbol_type_of): Rename from cris_pic_symbol_type_of. All
callers changed. Yield cris_offsettable_symbol for non-PIC
constant symbolic expressions including labels. Yield cris_unspec
for all unspecs.
(cris_expand_pic_call_address): New parameter MARKERP. Set its
target to pic_offset_table_rtx for calls that will likely go
through PLT, const0_rtx when they can't. All callers changed.
Assert flag_pic. Use CONSTANT_P, not CONSTANT_ADDRESS_P, for
symbolic expressions to be PICified. Remove second, redundant,
assert on can_create_pseudo_p returning non-zero. Use
replace_equiv_address_nv, not replace_equiv_address, for final
operand update.
* config/cris/cris.md ("movsi"): Move variable t to pattern
toplevel. Adjust assert for new cris_symbol_type member. Use
CONSTANT_P instead of CONSTANT_ADDRESS_P.
("*movsi_internal") <case 9>: Make check for valid unspec operands
for lapc stricter.
<case CRIS_UNSPEC_PCREL, CRIS_UNSPEC_PLT_PCREL>: Clear condition
codes.
("call", "call_value"): Use second incoming operand as a marker
for pic-offset-table-register being used.
("*expanded_call_non_v32", "*expanded_call_v32")
("*expanded_call_value_non_v32", "*expanded_call_value_v32"): For
second incoming operand to CALL, match cris_call_type_marker.
("*expanded_call_value_side"): Ditto. Disable before
reload_completed.
("*expanded_call_side"): Ditto. Fix typo in comment.
(moverside, movemside peepholes): Check for CRIS_CONSTANT_P, not
CONSTANT_P.
* config/cris/predicates.md ("cris_call_type_marker"): New predicate.
* config/cris/cris.h (CRIS_CONSTANT_P): New macro.
(enum cris_symbol_type): Rename from cris_pic_symbol_type. All
users changed. Add members cris_offsettable_symbol and
cris_unspec.
(cris_symbol_type): Rename from cris_pic_symbol_type.
* config/cris/constraints.md ("T"): Use CRIS_CONSTANT_P, not
just CONSTANT_P.
* config/cris/cris-protos.h (cris_symbol_type_of,
cris_expand_pic_call_address): Adjust prototypes.
(cris_legitimate_constant_p): New prototype.
From-SVN: r212708
Diffstat (limited to 'gcc/config/cris/cris-protos.h')
-rw-r--r-- | gcc/config/cris/cris-protos.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/config/cris/cris-protos.h b/gcc/config/cris/cris-protos.h index 0fdcafe52ca..b09babd6991 100644 --- a/gcc/config/cris/cris-protos.h +++ b/gcc/config/cris/cris-protos.h @@ -31,8 +31,9 @@ extern bool cris_cc0_user_requires_cmp (rtx); extern rtx cris_return_addr_rtx (int, rtx); extern rtx cris_split_movdx (rtx *); extern int cris_legitimate_pic_operand (rtx); -extern enum cris_pic_symbol_type cris_pic_symbol_type_of (const_rtx); +extern enum cris_symbol_type cris_symbol_type_of (const_rtx); extern bool cris_valid_pic_const (const_rtx, bool); +extern bool cris_legitimate_constant_p (enum machine_mode, rtx); extern bool cris_constant_index_p (const_rtx); extern bool cris_base_p (const_rtx, bool); extern bool cris_base_or_autoincr_p (const_rtx, bool); @@ -46,7 +47,7 @@ extern int cris_cfun_uses_pic_table (void); extern void cris_asm_output_case_end (FILE *, int, rtx); extern rtx cris_gen_movem_load (rtx, rtx, int); extern rtx cris_emit_movem_store (rtx, rtx, int, bool); -extern void cris_expand_pic_call_address (rtx *); +extern void cris_expand_pic_call_address (rtx *, rtx *); extern void cris_order_for_addsi3 (rtx *, int); extern void cris_emit_trap_for_misalignment (rtx); #endif /* RTX_CODE */ |