re PR target/50617 (ICE: RTL flag check: INSN_ANNULLED_BRANCH_P used with unexpected rtx code 'simplify_immed_subreg' in output_bb, at config/pa/pa.c:6631)

PR target/50617
	* config/pa/protos.h (attr_length_save_restore_dltp): Delete.
	(cmpib_comparison_operator): Likewise.
	(following_cal, output_and, output_ior, output_move_double,
	output_fp_move_double, output_block_move, output_block_clear,
	output_cbranch, output_lbranch, output_bb, output_bvb, output_dbra,
	output_movb, output_parallel_movb, output_parallel_addb, output_call,
	output_indirect_call, output_millicode_call, output_mul_insn,
	output_div_insn, output_mod_insn, singlemove_string,
	output_arg_descriptor, output_global_address, print_operand,
	legitimize_pic_address, hppa_encode_label, symbolic_expression_p,
	fmpyaddoperands, fmpysuboperands, emit_bcond_fp, emit_move_sequence,
	emit_hpdiv_const, is_function_label_plus_const, jump_in_call_delay,
	hppa_fpstore_bypass_p, attr_length_millicode_call, attr_length_call,
	attr_length_indirect_call, return_addr_rtx, function_arg_padding,
	insn_refs_are_delayed, get_deferred_plabel, ldil_cint_p, zdepi_cint_p,
	output_ascii, compute_frame_size, and_mask_p, cint_ok_for_move,
	hppa_expand_prologue, hppa_expand_epilogue, ior_mask_p,
	compute_zdepdi_operands, output_64bit_and, output_64bit_ior,
	reloc_needed, magic_milli, shadd_constant_p): Consistently prefix
	exported functions and variables with "pa_".
	* config/pa/predicates.md: Likewise.
	* config/pa/pa64-hpux.h: likewise.
	* config/pa/som.h: Likewise.
	* config/pa/elf.h: Likewise.
	* config/pa/pa64-linux.h: Likewise.
	* config/pa/pa.md: Likewise.
	* config/pa/pa.c: Likewise.
	* config/pa/pa-linux.h: Likewise.
	* config/pa/pa.h: Likewise.
	* config/pa/constraints.md: Likewise.

From-SVN: r180660
This commit is contained in:
John David Anglin 2011-10-29 18:58:48 +00:00 committed by John David Anglin
parent b99f906a4e
commit ae9d61aba6
12 changed files with 434 additions and 418 deletions

View File

@ -1,3 +1,37 @@
2011-10-29 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR target/50617
* config/pa/protos.h (attr_length_save_restore_dltp): Delete.
(cmpib_comparison_operator): Likewise.
(following_cal, output_and, output_ior, output_move_double,
output_fp_move_double, output_block_move, output_block_clear,
output_cbranch, output_lbranch, output_bb, output_bvb, output_dbra,
output_movb, output_parallel_movb, output_parallel_addb, output_call,
output_indirect_call, output_millicode_call, output_mul_insn,
output_div_insn, output_mod_insn, singlemove_string,
output_arg_descriptor, output_global_address, print_operand,
legitimize_pic_address, hppa_encode_label, symbolic_expression_p,
fmpyaddoperands, fmpysuboperands, emit_bcond_fp, emit_move_sequence,
emit_hpdiv_const, is_function_label_plus_const, jump_in_call_delay,
hppa_fpstore_bypass_p, attr_length_millicode_call, attr_length_call,
attr_length_indirect_call, return_addr_rtx, function_arg_padding,
insn_refs_are_delayed, get_deferred_plabel, ldil_cint_p, zdepi_cint_p,
output_ascii, compute_frame_size, and_mask_p, cint_ok_for_move,
hppa_expand_prologue, hppa_expand_epilogue, ior_mask_p,
compute_zdepdi_operands, output_64bit_and, output_64bit_ior,
reloc_needed, magic_milli, shadd_constant_p): Consistently prefix
exported functions and variables with "pa_".
* config/pa/predicates.md: Likewise.
* config/pa/pa64-hpux.h: likewise.
* config/pa/som.h: Likewise.
* config/pa/elf.h: Likewise.
* config/pa/pa64-linux.h: Likewise.
* config/pa/pa.md: Likewise.
* config/pa/pa.c: Likewise.
* config/pa/pa-linux.h: Likewise.
* config/pa/pa.h: Likewise.
* config/pa/constraints.md: Likewise.
2011-10-29 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (xop_sha<mode>3): Rename from xop_ashl<mode>3.

View File

@ -55,7 +55,7 @@
(define_constraint "K"
"Integer constant that can be deposited with a zdepi instruction."
(and (match_code "const_int")
(match_test "zdepi_cint_p (ival)")))
(match_test "pa_zdepi_cint_p (ival)")))
(define_constraint "L"
"Signed 5-bit integer constant."
@ -70,7 +70,7 @@
(define_constraint "N"
"Integer constant that can be loaded with a ldil instruction."
(and (match_code "const_int")
(match_test "ldil_cint_p (ival)")))
(match_test "pa_ldil_cint_p (ival)")))
(define_constraint "O"
"Integer constant such that ival+1 is a power of 2."
@ -81,7 +81,7 @@
"Integer constant that can be used as an and mask in depi and
extru instructions."
(and (match_code "const_int")
(match_test "and_mask_p (ival)")))
(match_test "pa_and_mask_p (ival)")))
(define_constraint "S"
"Integer constant 31."

View File

@ -80,7 +80,7 @@ do { \
#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, RTL) \
do { fputs ("\t.IMPORT ", FILE); \
if (!function_label_operand (RTL, VOIDmode)) \
hppa_encode_label (RTL); \
pa_encode_label (RTL); \
assemble_name (FILE, XSTR ((RTL), 0)); \
fputs (",ENTRY\n", FILE); \
} while (0)

View File

@ -128,7 +128,7 @@ along with GCC; see the file COPYING3. If not see
do \
{ \
if (!FUNCTION_NAME_P (XSTR (FUN, 0))) \
hppa_encode_label (FUN); \
pa_encode_label (FUN); \
(*targetm.asm_out.globalize_label) (FILE, XSTR (FUN, 0)); \
} \
while (0)

View File

@ -24,89 +24,82 @@ along with GCC; see the file COPYING3. If not see
extern rtx pa_eh_return_handler_rtx (void);
/* Used in insn-*.c. */
extern int following_call (rtx);
extern int pa_following_call (rtx);
/* Define functions in pa.c and used in insn-output.c. */
extern const char *output_and (rtx *);
extern const char *output_ior (rtx *);
extern const char *output_move_double (rtx *);
extern const char *output_fp_move_double (rtx *);
extern const char *output_block_move (rtx *, int);
extern const char *output_block_clear (rtx *, int);
extern const char *output_cbranch (rtx *, int, rtx);
extern const char *output_lbranch (rtx, rtx, int);
extern const char *output_bb (rtx *, int, rtx, int);
extern const char *output_bvb (rtx *, int, rtx, int);
extern const char *output_dbra (rtx *, rtx, int);
extern const char *output_movb (rtx *, rtx, int, int);
extern const char *output_parallel_movb (rtx *, rtx);
extern const char *output_parallel_addb (rtx *, rtx);
extern const char *output_call (rtx, rtx, int);
extern const char *output_indirect_call (rtx, rtx);
extern const char *output_millicode_call (rtx, rtx);
extern const char *output_mul_insn (int, rtx);
extern const char *output_div_insn (rtx *, int, rtx);
extern const char *output_mod_insn (int, rtx);
extern const char *singlemove_string (rtx *);
extern void output_arg_descriptor (rtx);
extern void output_global_address (FILE *, rtx, int);
extern void print_operand (FILE *, rtx, int);
extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx);
extern void hppa_encode_label (rtx);
extern int symbolic_expression_p (rtx);
extern const char *pa_output_and (rtx *);
extern const char *pa_output_64bit_and (rtx *);
extern const char *pa_output_ior (rtx *);
extern const char *pa_output_64bit_ior (rtx *);
extern const char *pa_output_move_double (rtx *);
extern const char *pa_output_fp_move_double (rtx *);
extern const char *pa_output_block_move (rtx *, int);
extern const char *pa_output_block_clear (rtx *, int);
extern const char *pa_output_cbranch (rtx *, int, rtx);
extern const char *pa_output_lbranch (rtx, rtx, int);
extern const char *pa_output_bb (rtx *, int, rtx, int);
extern const char *pa_output_bvb (rtx *, int, rtx, int);
extern const char *pa_output_dbra (rtx *, rtx, int);
extern const char *pa_output_movb (rtx *, rtx, int, int);
extern const char *pa_output_parallel_movb (rtx *, rtx);
extern const char *pa_output_parallel_addb (rtx *, rtx);
extern const char *pa_output_call (rtx, rtx, int);
extern const char *pa_output_indirect_call (rtx, rtx);
extern const char *pa_output_millicode_call (rtx, rtx);
extern const char *pa_output_mul_insn (int, rtx);
extern const char *pa_output_div_insn (rtx *, int, rtx);
extern const char *pa_output_mod_insn (int, rtx);
extern const char *pa_singlemove_string (rtx *);
extern void pa_output_arg_descriptor (rtx);
extern void pa_output_global_address (FILE *, rtx, int);
extern void pa_print_operand (FILE *, rtx, int);
extern void pa_encode_label (rtx);
extern int pa_symbolic_expression_p (rtx);
extern bool pa_tls_referenced_p (rtx);
extern int pa_adjust_insn_length (rtx, int);
extern int fmpyaddoperands (rtx *);
extern int fmpysuboperands (rtx *);
extern void emit_bcond_fp (rtx[]);
extern int emit_move_sequence (rtx *, enum machine_mode, rtx);
extern int emit_hpdiv_const (rtx *, int);
extern int is_function_label_plus_const (rtx);
extern int jump_in_call_delay (rtx);
extern int hppa_fpstore_bypass_p (rtx, rtx);
extern int attr_length_millicode_call (rtx);
extern int attr_length_call (rtx, int);
extern int attr_length_indirect_call (rtx);
extern int attr_length_save_restore_dltp (rtx);
extern int pa_fmpyaddoperands (rtx *);
extern int pa_fmpysuboperands (rtx *);
extern void pa_emit_bcond_fp (rtx[]);
extern int pa_emit_move_sequence (rtx *, enum machine_mode, rtx);
extern int pa_emit_hpdiv_const (rtx *, int);
extern int pa_is_function_label_plus_const (rtx);
extern int pa_jump_in_call_delay (rtx);
extern int pa_fpstore_bypass_p (rtx, rtx);
extern int pa_attr_length_millicode_call (rtx);
extern int pa_attr_length_call (rtx, int);
extern int pa_attr_length_indirect_call (rtx);
/* Declare functions defined in pa.c and used in templates. */
extern rtx return_addr_rtx (int, rtx);
extern rtx pa_return_addr_rtx (int, rtx);
#ifdef ARGS_SIZE_RTX
/* expr.h defines ARGS_SIZE_RTX and `enum direction' */
#ifdef TREE_CODE
extern enum direction function_arg_padding (enum machine_mode, const_tree);
extern enum direction pa_function_arg_padding (enum machine_mode, const_tree);
#endif
#endif /* ARGS_SIZE_RTX */
extern int insn_refs_are_delayed (rtx);
extern rtx get_deferred_plabel (rtx);
extern int pa_insn_refs_are_delayed (rtx);
extern rtx pa_get_deferred_plabel (rtx);
#endif /* RTX_CODE */
extern int ldil_cint_p (HOST_WIDE_INT);
extern int zdepi_cint_p (unsigned HOST_WIDE_INT);
extern int pa_and_mask_p (unsigned HOST_WIDE_INT);
extern int pa_cint_ok_for_move (HOST_WIDE_INT);
extern int pa_ior_mask_p (unsigned HOST_WIDE_INT);
extern int pa_ldil_cint_p (HOST_WIDE_INT);
extern int pa_shadd_constant_p (int);
extern int pa_zdepi_cint_p (unsigned HOST_WIDE_INT);
extern void output_ascii (FILE *, const char *, int);
extern HOST_WIDE_INT compute_frame_size (HOST_WIDE_INT, int *);
extern int and_mask_p (unsigned HOST_WIDE_INT);
extern int cint_ok_for_move (HOST_WIDE_INT);
extern void hppa_expand_prologue (void);
extern void hppa_expand_epilogue (void);
extern void pa_output_ascii (FILE *, const char *, int);
extern HOST_WIDE_INT pa_compute_frame_size (HOST_WIDE_INT, int *);
extern void pa_expand_prologue (void);
extern void pa_expand_epilogue (void);
extern bool pa_can_use_return_insn (void);
extern int ior_mask_p (unsigned HOST_WIDE_INT);
extern void compute_zdepdi_operands (unsigned HOST_WIDE_INT,
unsigned *);
#ifdef RTX_CODE
extern const char * output_64bit_and (rtx *);
extern const char * output_64bit_ior (rtx *);
extern int cmpib_comparison_operator (rtx, enum machine_mode);
#endif
/* Miscellaneous functions in pa.c. */
#ifdef TREE_CODE
extern int reloc_needed (tree);
extern int pa_reloc_needed (tree);
extern bool pa_return_in_memory (const_tree, const_tree);
#endif /* TREE_CODE */
@ -125,5 +118,4 @@ extern bool pa_cannot_change_mode_class (enum machine_mode, enum machine_mode,
extern bool pa_modes_tieable_p (enum machine_mode, enum machine_mode);
extern HOST_WIDE_INT pa_initial_elimination_offset (int, int);
extern const int magic_milli[];
extern int shadd_constant_p (int);
extern const int pa_magic_milli[];

File diff suppressed because it is too large Load Diff

View File

@ -162,11 +162,11 @@ extern unsigned long total_code_bytes;
the stack pointer at the function's entry. Yuk! */
#define DEBUGGER_AUTO_OFFSET(X) \
((GET_CODE (X) == PLUS ? INTVAL (XEXP (X, 1)) : 0) \
+ (frame_pointer_needed ? 0 : compute_frame_size (get_frame_size (), 0)))
+ (frame_pointer_needed ? 0 : pa_compute_frame_size (get_frame_size (), 0)))
#define DEBUGGER_ARG_OFFSET(OFFSET, X) \
((GET_CODE (X) == PLUS ? OFFSET : 0) \
+ (frame_pointer_needed ? 0 : compute_frame_size (get_frame_size (), 0)))
+ (frame_pointer_needed ? 0 : pa_compute_frame_size (get_frame_size (), 0)))
#define TARGET_CPU_CPP_BUILTINS() \
do { \
@ -457,7 +457,7 @@ extern rtx hppa_pic_save_rtx (void);
{ \
fputs (integer_asm_op (SIZE, FALSE), FILE); \
if ((ENCODING) & DW_EH_PE_indirect) \
output_addr_const (FILE, get_deferred_plabel (ADDR)); \
output_addr_const (FILE, pa_get_deferred_plabel (ADDR)); \
else \
assemble_name (FILE, XSTR ((ADDR), 0)); \
fputs ("+8-$PIC_pcrel$0", FILE); \
@ -661,7 +661,8 @@ struct hppa_args {int words, nargs_prototype, incoming, indirect; };
/* If defined, a C expression which determines whether, and in which
direction, to pad out an argument with extra space. */
#define FUNCTION_ARG_PADDING(MODE, TYPE) function_arg_padding ((MODE), (TYPE))
#define FUNCTION_ARG_PADDING(MODE, TYPE) \
pa_function_arg_padding ((MODE), (TYPE))
/* Specify padding for the last element of a block move between registers
and memory.
@ -673,7 +674,7 @@ struct hppa_args {int words, nargs_prototype, incoming, indirect; };
so that there is only one element. This allows the object to be
correctly padded. */
#define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \
function_arg_padding ((MODE), (TYPE))
pa_function_arg_padding ((MODE), (TYPE))
/* On HPPA, we emit profiling code as rtl via PROFILE_HOOK rather than
@ -793,7 +794,8 @@ extern int may_call_alloca;
|| (GET_CODE (X) == SYMBOL_REF && !SYMBOL_REF_TLS_MODEL (X)) \
|| GET_CODE (X) == CONST_INT || GET_CODE (X) == CONST \
|| GET_CODE (X) == HIGH) \
&& (reload_in_progress || reload_completed || ! symbolic_expression_p (X)))
&& (reload_in_progress || reload_completed \
|| ! pa_symbolic_expression_p (X)))
/* A C expression that is nonzero if we are using the new HP assembler. */
@ -926,7 +928,7 @@ extern int may_call_alloca;
the REG_POINTER lossage can be fixed, it seems better canonicalize.
We initially break out scaled indexed addresses in canonical order
in emit_move_sequence. LEGITIMIZE_ADDRESS also canonicalizes
in pa_emit_move_sequence. LEGITIMIZE_ADDRESS also canonicalizes
scaled indexed addresses during RTL generation. However, fold_rtx
has its own opinion on how the operands of a PLUS should be ordered.
If one of the operands is equivalent to a constant, it will make
@ -1183,7 +1185,7 @@ do { \
(TREE_CODE (DECL) == FUNCTION_DECL \
|| (TREE_CODE (DECL) == VAR_DECL \
&& TREE_READONLY (DECL) && ! TREE_SIDE_EFFECTS (DECL) \
&& (! DECL_INITIAL (DECL) || ! reloc_needed (DECL_INITIAL (DECL))) \
&& (! DECL_INITIAL (DECL) || ! pa_reloc_needed (DECL_INITIAL (DECL))) \
&& !flag_pic) \
|| CONSTANT_CLASS_P (DECL))
@ -1290,7 +1292,7 @@ do { \
get_attr_type will try to recognize the given insn, so make sure to
filter out things it will not accept -- SEQUENCE, USE and CLOBBER insns
in particular. */
#define INSN_REFERENCES_ARE_DELAYED(X) (insn_refs_are_delayed (X))
#define INSN_REFERENCES_ARE_DELAYED(X) (pa_insn_refs_are_delayed (X))
/* Control the assembler format that we output. */
@ -1368,7 +1370,7 @@ do { \
#define TARGET_ASM_GLOBALIZE_LABEL pa_globalize_label
#define ASM_OUTPUT_ASCII(FILE, P, SIZE) \
output_ascii ((FILE), (P), (SIZE))
pa_output_ascii ((FILE), (P), (SIZE))
/* Jump tables are always placed in the text section. Technically, it
is possible to put them in the readonly data section when -mbig-switch
@ -1452,7 +1454,7 @@ do { \
M modifier to handle preincrement addressing for memory refs.
F modifier to handle preincrement addressing for fp memory refs */
#define PRINT_OPERAND(FILE, X, CODE) print_operand (FILE, X, CODE)
#define PRINT_OPERAND(FILE, X, CODE) pa_print_operand (FILE, X, CODE)
/* Print a memory address as an operand to reference that memory location. */
@ -1476,7 +1478,7 @@ do { \
fputs ("RR'", FILE); \
else \
fputs ("RT'", FILE); \
output_global_address (FILE, XEXP (addr, 1), 0); \
pa_output_global_address (FILE, XEXP (addr, 1), 0); \
fputs ("(", FILE); \
output_operand (XEXP (addr, 0), 0); \
fputs (")", FILE); \
@ -1492,7 +1494,7 @@ do { \
/* Find the return address associated with the frame given by
FRAMEADDR. */
#define RETURN_ADDR_RTX(COUNT, FRAMEADDR) \
(return_addr_rtx (COUNT, FRAMEADDR))
(pa_return_addr_rtx (COUNT, FRAMEADDR))
/* Used to mask out junk bits from the return address, such as
processor state, interrupt status, condition codes and the like. */

File diff suppressed because it is too large Load Diff

View File

@ -236,7 +236,7 @@ do { \
#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \
do { \
if (!FUNCTION_NAME_P (XSTR (FUN, 0))) \
hppa_encode_label (FUN); \
pa_encode_label (FUN); \
ASM_OUTPUT_TYPE_DIRECTIVE (FILE, XSTR (FUN, 0), "function"); \
} while (0)

View File

@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. If not see
{ \
int fsize; \
\
fsize = compute_frame_size (get_frame_size (), 0); \
fsize = pa_compute_frame_size (get_frame_size (), 0); \
if ((TO) == FRAME_POINTER_REGNUM \
&& (FROM) == ARG_POINTER_REGNUM) \
{ \

View File

@ -59,14 +59,14 @@
(define_predicate "cint_ior_operand"
(and (match_code "const_int")
(match_test "ior_mask_p (INTVAL (op))")))
(match_test "pa_ior_mask_p (INTVAL (op))")))
;; True iff OP is CONST_INT that can be moved in one instruction
;; into a general register.
(define_predicate "cint_move_operand"
(and (match_code "const_int")
(match_test "cint_ok_for_move (INTVAL (op))")))
(match_test "pa_cint_ok_for_move (INTVAL (op))")))
;; True iff OP is a CONST0_RTX for MODE.
@ -91,7 +91,7 @@
(define_predicate "and_operand"
(ior (match_operand 0 "register_operand")
(and (match_code "const_int")
(match_test "and_mask_p (INTVAL (op))"))))
(match_test "pa_and_mask_p (INTVAL (op))"))))
;; Return truth value of whether OP can be used as an operand in a
;; three operand arithmetic insn that accepts registers of mode MODE
@ -179,7 +179,7 @@
&& ((REG_P (op) && REGNO (op) == 25)
|| (CONST_INT_P (op)
&& INTVAL (op) > 0 && INTVAL (op) < 16
&& magic_milli[INTVAL (op)])));
&& pa_magic_milli[INTVAL (op)])));
})
;; True iff OP is a reloading floating point register
@ -304,7 +304,7 @@
return true;
if (CONST_INT_P (op))
return cint_ok_for_move (INTVAL (op));
return pa_cint_ok_for_move (INTVAL (op));
if (GET_MODE (op) != mode)
return false;
@ -452,7 +452,7 @@
(define_predicate "shadd_operand"
(and (match_code "const_int")
(match_test "shadd_constant_p (INTVAL (op))")))
(match_test "pa_shadd_constant_p (INTVAL (op))")))
;; Return truth value of statement that OP is a symbolic memory operand.
@ -463,7 +463,7 @@
op = SUBREG_REG (op);
if (!MEM_P (op))
return false;
return symbolic_expression_p (XEXP (op, 0));
return pa_symbolic_expression_p (XEXP (op, 0));
})
;; True iff OP is a symbolic operand.

View File

@ -227,7 +227,7 @@ do { \
tree id; \
\
if (!function_label_operand (RTL, VOIDmode)) \
hppa_encode_label (RTL); \
pa_encode_label (RTL); \
\
name = targetm.strip_name_encoding (XSTR ((RTL), 0)); \
id = maybe_get_identifier (name); \