Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
/* Exported functions from emit-rtl.c
|
2017-01-01 13:07:43 +01:00
|
|
|
Copyright (C) 2004-2017 Free Software Foundation, Inc.
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
|
|
|
This file is part of GCC.
|
|
|
|
|
|
|
|
GCC is free software; you can redistribute it and/or modify it under
|
|
|
|
the terms of the GNU General Public License as published by the Free
|
2007-07-26 10:37:01 +02:00
|
|
|
Software Foundation; either version 3, or (at your option) any later
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
version.
|
|
|
|
|
|
|
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
|
|
for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
2007-07-26 10:37:01 +02:00
|
|
|
along with GCC; see the file COPYING3. If not see
|
|
|
|
<http://www.gnu.org/licenses/>. */
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
|
|
|
#ifndef GCC_EMIT_RTL_H
|
|
|
|
#define GCC_EMIT_RTL_H
|
|
|
|
|
2015-06-17 20:53:03 +02:00
|
|
|
struct temp_slot;
|
|
|
|
typedef struct temp_slot *temp_slot_p;
|
|
|
|
|
2015-06-25 18:51:35 +02:00
|
|
|
/* Information mainlined about RTL representation of incoming arguments. */
|
|
|
|
struct GTY(()) incoming_args {
|
|
|
|
/* Number of bytes of args popped by function being compiled on its return.
|
|
|
|
Zero if no bytes are to be popped.
|
|
|
|
May affect compilation of return insn or of function epilogue. */
|
|
|
|
int pops_args;
|
|
|
|
|
|
|
|
/* If function's args have a fixed size, this is that size, in bytes.
|
|
|
|
Otherwise, it is -1.
|
|
|
|
May affect compilation of return insn or of function epilogue. */
|
|
|
|
int size;
|
|
|
|
|
|
|
|
/* # bytes the prologue should push and pretend that the caller pushed them.
|
|
|
|
The prologue must do this, but only if parms can be passed in
|
|
|
|
registers. */
|
|
|
|
int pretend_args_size;
|
|
|
|
|
|
|
|
/* This is the offset from the arg pointer to the place where the first
|
|
|
|
anonymous arg can be found, if there is one. */
|
|
|
|
rtx arg_offset_rtx;
|
|
|
|
|
|
|
|
/* Quantities of various kinds of registers
|
|
|
|
used for the current function's args. */
|
|
|
|
CUMULATIVE_ARGS info;
|
|
|
|
|
|
|
|
/* The arg pointer hard register, or the pseudo into which it was copied. */
|
|
|
|
rtx internal_arg_pointer;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2015-06-17 20:53:03 +02:00
|
|
|
/* Datastructures maintained for currently processed function in RTL form. */
|
|
|
|
struct GTY(()) rtl_data {
|
2016-12-07 17:41:05 +01:00
|
|
|
void init_stack_alignment ();
|
|
|
|
|
2015-06-17 20:53:03 +02:00
|
|
|
struct expr_status expr;
|
|
|
|
struct emit_status emit;
|
|
|
|
struct varasm_status varasm;
|
|
|
|
struct incoming_args args;
|
|
|
|
struct function_subsections subsections;
|
|
|
|
struct rtl_eh eh;
|
|
|
|
|
|
|
|
/* For function.c */
|
|
|
|
|
|
|
|
/* # of bytes of outgoing arguments. If ACCUMULATE_OUTGOING_ARGS is
|
|
|
|
defined, the needed space is pushed by the prologue. */
|
|
|
|
int outgoing_args_size;
|
|
|
|
|
|
|
|
/* If nonzero, an RTL expression for the location at which the current
|
|
|
|
function returns its result. If the current function returns its
|
|
|
|
result in a register, current_function_return_rtx will always be
|
|
|
|
the hard register containing the result. */
|
|
|
|
rtx return_rtx;
|
|
|
|
/* If nonxero, an RTL expression for the lcoation at which the current
|
|
|
|
function returns bounds for its result. */
|
|
|
|
rtx return_bnd;
|
|
|
|
|
|
|
|
/* Vector of initial-value pairs. Each pair consists of a pseudo
|
|
|
|
register of approprite mode that stores the initial value a hard
|
|
|
|
register REGNO, and that hard register itself. */
|
|
|
|
/* ??? This could be a VEC but there is currently no way to define an
|
|
|
|
opaque VEC type. */
|
|
|
|
struct initial_value_struct *hard_reg_initial_vals;
|
|
|
|
|
|
|
|
/* A variable living at the top of the frame that holds a known value.
|
|
|
|
Used for detecting stack clobbers. */
|
|
|
|
tree stack_protect_guard;
|
|
|
|
|
|
|
|
/* List (chain of INSN_LIST) of labels heading the current handlers for
|
|
|
|
nonlocal gotos. */
|
|
|
|
rtx_insn_list *x_nonlocal_goto_handler_labels;
|
|
|
|
|
|
|
|
/* Label that will go on function epilogue.
|
|
|
|
Jumping to this label serves as a "return" instruction
|
|
|
|
on machines which require execution of the epilogue on all returns. */
|
|
|
|
rtx_code_label *x_return_label;
|
|
|
|
|
|
|
|
/* Label that will go on the end of function epilogue.
|
|
|
|
Jumping to this label serves as a "naked return" instruction
|
|
|
|
on machines which require execution of the epilogue on all returns. */
|
|
|
|
rtx_code_label *x_naked_return_label;
|
|
|
|
|
|
|
|
/* List (chain of EXPR_LISTs) of all stack slots in this function.
|
|
|
|
Made for the sake of unshare_all_rtl. */
|
2016-08-28 02:04:04 +02:00
|
|
|
vec<rtx, va_gc> *x_stack_slot_list;
|
2015-06-17 20:53:03 +02:00
|
|
|
|
|
|
|
/* List of empty areas in the stack frame. */
|
|
|
|
struct frame_space *frame_space_list;
|
|
|
|
|
|
|
|
/* Place after which to insert the tail_recursion_label if we need one. */
|
|
|
|
rtx_note *x_stack_check_probe_note;
|
|
|
|
|
|
|
|
/* Location at which to save the argument pointer if it will need to be
|
|
|
|
referenced. There are two cases where this is done: if nonlocal gotos
|
|
|
|
exist, or if vars stored at an offset from the argument pointer will be
|
|
|
|
needed by inner routines. */
|
|
|
|
rtx x_arg_pointer_save_area;
|
|
|
|
|
|
|
|
/* Dynamic Realign Argument Pointer used for realigning stack. */
|
|
|
|
rtx drap_reg;
|
|
|
|
|
|
|
|
/* Offset to end of allocated area of stack frame.
|
|
|
|
If stack grows down, this is the address of the last stack slot allocated.
|
|
|
|
If stack grows up, this is the address for the next slot. */
|
|
|
|
HOST_WIDE_INT x_frame_offset;
|
|
|
|
|
|
|
|
/* Insn after which register parms and SAVE_EXPRs are born, if nonopt. */
|
|
|
|
rtx_insn *x_parm_birth_insn;
|
|
|
|
|
|
|
|
/* List of all used temporaries allocated, by level. */
|
|
|
|
vec<temp_slot_p, va_gc> *x_used_temp_slots;
|
|
|
|
|
|
|
|
/* List of available temp slots. */
|
|
|
|
struct temp_slot *x_avail_temp_slots;
|
|
|
|
|
|
|
|
/* Current nesting level for temporaries. */
|
|
|
|
int x_temp_slot_level;
|
|
|
|
|
|
|
|
/* The largest alignment needed on the stack, including requirement
|
|
|
|
for outgoing stack alignment. */
|
|
|
|
unsigned int stack_alignment_needed;
|
|
|
|
|
|
|
|
/* Preferred alignment of the end of stack frame, which is preferred
|
|
|
|
to call other functions. */
|
|
|
|
unsigned int preferred_stack_boundary;
|
|
|
|
|
|
|
|
/* The minimum alignment of parameter stack. */
|
|
|
|
unsigned int parm_stack_boundary;
|
|
|
|
|
|
|
|
/* The largest alignment of slot allocated on the stack. */
|
|
|
|
unsigned int max_used_stack_slot_alignment;
|
|
|
|
|
|
|
|
/* The stack alignment estimated before reload, with consideration of
|
|
|
|
following factors:
|
|
|
|
1. Alignment of local stack variables (max_used_stack_slot_alignment)
|
|
|
|
2. Alignment requirement to call other functions
|
|
|
|
(preferred_stack_boundary)
|
|
|
|
3. Alignment of non-local stack variables but might be spilled in
|
|
|
|
local stack. */
|
|
|
|
unsigned int stack_alignment_estimated;
|
|
|
|
|
|
|
|
/* For reorg. */
|
|
|
|
|
|
|
|
/* Nonzero if function being compiled called builtin_return_addr or
|
|
|
|
builtin_frame_address with nonzero count. */
|
|
|
|
bool accesses_prior_frames;
|
|
|
|
|
|
|
|
/* Nonzero if the function calls __builtin_eh_return. */
|
|
|
|
bool calls_eh_return;
|
|
|
|
|
|
|
|
/* Nonzero if function saves all registers, e.g. if it has a nonlocal
|
|
|
|
label that can reach the exit block via non-exceptional paths. */
|
|
|
|
bool saves_all_registers;
|
|
|
|
|
|
|
|
/* Nonzero if function being compiled has nonlocal gotos to parent
|
|
|
|
function. */
|
|
|
|
bool has_nonlocal_goto;
|
|
|
|
|
|
|
|
/* Nonzero if function being compiled has an asm statement. */
|
|
|
|
bool has_asm_statement;
|
|
|
|
|
|
|
|
/* This bit is used by the exception handling logic. It is set if all
|
|
|
|
calls (if any) are sibling calls. Such functions do not have to
|
|
|
|
have EH tables generated, as they cannot throw. A call to such a
|
|
|
|
function, however, should be treated as throwing if any of its callees
|
|
|
|
can throw. */
|
|
|
|
bool all_throwers_are_sibcalls;
|
|
|
|
|
|
|
|
/* Nonzero if stack limit checking should be enabled in the current
|
|
|
|
function. */
|
|
|
|
bool limit_stack;
|
|
|
|
|
|
|
|
/* Nonzero if profiling code should be generated. */
|
|
|
|
bool profile;
|
|
|
|
|
|
|
|
/* Nonzero if the current function uses the constant pool. */
|
|
|
|
bool uses_const_pool;
|
|
|
|
|
|
|
|
/* Nonzero if the current function uses pic_offset_table_rtx. */
|
|
|
|
bool uses_pic_offset_table;
|
|
|
|
|
|
|
|
/* Nonzero if the current function needs an lsda for exception handling. */
|
|
|
|
bool uses_eh_lsda;
|
|
|
|
|
|
|
|
/* Set when the tail call has been produced. */
|
|
|
|
bool tail_call_emit;
|
|
|
|
|
|
|
|
/* Nonzero if code to initialize arg_pointer_save_area has been emitted. */
|
|
|
|
bool arg_pointer_save_area_init;
|
|
|
|
|
|
|
|
/* Nonzero if current function must be given a frame pointer.
|
|
|
|
Set in reload1.c or lra-eliminations.c if anything is allocated
|
|
|
|
on the stack there. */
|
|
|
|
bool frame_pointer_needed;
|
|
|
|
|
|
|
|
/* When set, expand should optimize for speed. */
|
|
|
|
bool maybe_hot_insn_p;
|
|
|
|
|
|
|
|
/* Nonzero if function stack realignment is needed. This flag may be
|
|
|
|
set twice: before and after reload. It is set before reload wrt
|
|
|
|
stack alignment estimation before reload. It will be changed after
|
|
|
|
reload if by then criteria of stack realignment is different.
|
|
|
|
The value set after reload is the accurate one and is finalized. */
|
|
|
|
bool stack_realign_needed;
|
|
|
|
|
|
|
|
/* Nonzero if function stack realignment is tried. This flag is set
|
|
|
|
only once before reload. It affects register elimination. This
|
|
|
|
is used to generate DWARF debug info for stack variables. */
|
|
|
|
bool stack_realign_tried;
|
|
|
|
|
|
|
|
/* Nonzero if function being compiled needs dynamic realigned
|
|
|
|
argument pointer (drap) if stack needs realigning. */
|
|
|
|
bool need_drap;
|
|
|
|
|
|
|
|
/* Nonzero if function stack realignment estimation is done, namely
|
|
|
|
stack_realign_needed flag has been set before reload wrt estimated
|
|
|
|
stack alignment info. */
|
|
|
|
bool stack_realign_processed;
|
|
|
|
|
|
|
|
/* Nonzero if function stack realignment has been finalized, namely
|
|
|
|
stack_realign_needed flag has been set and finalized after reload. */
|
|
|
|
bool stack_realign_finalized;
|
|
|
|
|
|
|
|
/* True if dbr_schedule has already been called for this function. */
|
|
|
|
bool dbr_scheduled_p;
|
|
|
|
|
|
|
|
/* True if current function can not throw. Unlike
|
|
|
|
TREE_NOTHROW (current_function_decl) it is set even for overwritable
|
|
|
|
function where currently compiled version of it is nothrow. */
|
|
|
|
bool nothrow;
|
|
|
|
|
|
|
|
/* True if we performed shrink-wrapping for the current function. */
|
|
|
|
bool shrink_wrapped;
|
|
|
|
|
separate shrink-wrap: New command-line flag, status flag, hooks, and doc
This patch adds a new command-line flag "-fshrink-wrap-separate", a status
flag "shrink_wrapped_separate", hooks for abstracting the target components,
and documentation for all those.
* common.opt (-fshrink-wrap-separate): New flag.
* doc/invoke.texi: Document it.
* doc/tm.texi.in (Shrink-wrapping separate components): New subsection.
* doc/tm.texi: Regenerate.
* emit-rtl.h (struct rtl_data): New field shrink_wrapped_separate.
* target.def (shrink_wrap): New hook vector.
(get_separate_components, components_for_bb, disqualify_components,
emit_prologue_components, emit_epilogue_components,
set_handled_components): New hooks.
From-SVN: r241059
2016-10-12 17:19:46 +02:00
|
|
|
/* True if we performed shrink-wrapping for separate components for
|
|
|
|
the current function. */
|
|
|
|
bool shrink_wrapped_separate;
|
|
|
|
|
2015-06-17 20:53:03 +02:00
|
|
|
/* Nonzero if function being compiled doesn't modify the stack pointer
|
|
|
|
(ignoring the prologue and epilogue). This is only valid after
|
|
|
|
pass_stack_ptr_mod has run. */
|
|
|
|
bool sp_is_unchanging;
|
|
|
|
|
|
|
|
/* Nonzero if function being compiled doesn't contain any calls
|
|
|
|
(ignoring the prologue and epilogue). This is set prior to
|
|
|
|
local register allocation and is valid for the remaining
|
|
|
|
compiler passes. */
|
|
|
|
bool is_leaf;
|
|
|
|
|
|
|
|
/* Nonzero if the function being compiled is a leaf function which only
|
|
|
|
uses leaf registers. This is valid after reload (specifically after
|
|
|
|
sched2) and is useful only if the port defines LEAF_REGISTERS. */
|
|
|
|
bool uses_only_leaf_regs;
|
|
|
|
|
|
|
|
/* Nonzero if the function being compiled has undergone hot/cold partitioning
|
|
|
|
(under flag_reorder_blocks_and_partition) and has at least one cold
|
|
|
|
block. */
|
|
|
|
bool has_bb_partition;
|
|
|
|
|
|
|
|
/* Nonzero if the function being compiled has completed the bb reordering
|
|
|
|
pass. */
|
|
|
|
bool bb_reorder_complete;
|
|
|
|
|
|
|
|
/* Like regs_ever_live, but 1 if a reg is set or clobbered from an
|
|
|
|
asm. Unlike regs_ever_live, elements of this array corresponding
|
|
|
|
to eliminable regs (like the frame pointer) are set if an asm
|
|
|
|
sets them. */
|
|
|
|
HARD_REG_SET asm_clobbers;
|
2016-11-24 13:54:56 +01:00
|
|
|
|
|
|
|
/* The highest address seen during shorten_branches. */
|
|
|
|
int max_insn_address;
|
2015-06-17 20:53:03 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#define return_label (crtl->x_return_label)
|
|
|
|
#define naked_return_label (crtl->x_naked_return_label)
|
|
|
|
#define stack_slot_list (crtl->x_stack_slot_list)
|
|
|
|
#define parm_birth_insn (crtl->x_parm_birth_insn)
|
|
|
|
#define frame_offset (crtl->x_frame_offset)
|
|
|
|
#define stack_check_probe_note (crtl->x_stack_check_probe_note)
|
|
|
|
#define arg_pointer_save_area (crtl->x_arg_pointer_save_area)
|
|
|
|
#define used_temp_slots (crtl->x_used_temp_slots)
|
|
|
|
#define avail_temp_slots (crtl->x_avail_temp_slots)
|
|
|
|
#define temp_slot_level (crtl->x_temp_slot_level)
|
|
|
|
#define nonlocal_goto_handler_labels (crtl->x_nonlocal_goto_handler_labels)
|
|
|
|
#define frame_pointer_needed (crtl->frame_pointer_needed)
|
|
|
|
#define stack_realign_fp (crtl->stack_realign_needed && !crtl->need_drap)
|
|
|
|
#define stack_realign_drap (crtl->stack_realign_needed && crtl->need_drap)
|
|
|
|
|
|
|
|
extern GTY(()) struct rtl_data x_rtl;
|
|
|
|
|
|
|
|
/* Accessor to RTL datastructures. We keep them statically allocated now since
|
|
|
|
we never keep multiple functions. For threaded compiler we might however
|
|
|
|
want to do differently. */
|
|
|
|
#define crtl (&x_rtl)
|
|
|
|
|
2014-08-05 15:05:06 +02:00
|
|
|
/* Return whether two MEM_ATTRs are equal. */
|
|
|
|
bool mem_attrs_eq_p (const struct mem_attrs *, const struct mem_attrs *);
|
|
|
|
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
/* Set the alias set of MEM to SET. */
|
alias.h (alias_set_type): Define new type.
./: * alias.h (alias_set_type): Define new type.
(ALIAS_SET_MEMORY_BARRIER): Use it.
* rtl.h: Include alias.h.
(struct mem_attrs): Use alias_set_type.
* tree.h: Include alias.h
(struct tree_type): Use alias_set_type.
(struct tree_struct_field_tag): Likewise.
(struct tree_decl_common): Likewise.
* alias.c (struct alias_set_entry): Use alias_set_type.
(get_alias_set_entry, alias_set_subset_of): Likewise.
(alias_sets_conflict_p): Likewise.
(alias_sets_must_conflict_p): Likewise.
(objects_must_conflict_p): Likewise.
(get_alias_set, new_alias_set): Likewise.
(record_alias_subset, record_component_aliases): Likewise.
(varargs_set, frame_set): Change to alias_set_type.
(get_varargs_alias_set): Use alias_set_type.
(get_frame_alias_set): Likewise.
* builtins.c (setjmp_alias_set): Change to alias_set_type.
* dse.c (struct store_info): Use alias_set_type.
(struct read_info, struct clear_alias_mode_holder): Likewise.
(clear_alias_set_lookup, canon_address): Likewise.
(record_store, check_mem_read_rtx): Likewise.
(dse_record_singleton_alias_set): Likewise.
(dse_invalidate_singleton_alias_set): Likewise.
* emit-rtl.c (get_mem_attrs): Likewise.
(set_mem_attributes_minus_bitpos): Likewise.
(set_mem_alias_set): Likewise.
* expr.c (store_constructor_field, store_field): Likewise.
* gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
* langhooks.c (lhd_get_alias_set): Likewise.
* langhooks-def.h (lhd_get_alias_set): Likewise.
* reload1.c (alter_reg): Likewise.
* tree-flow.h (struct fieldoff): Likewise.
* tree-ssa-alias.c (struct alias_map_d): Likewise.
(may_alias_p, get_smt_for, create_sft): Likewise.
* tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
* tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
(merge_smts_into): Likewise.
* varasm.c (const_alias_set): Likewise.
* c-common.c (strict_aliasing_warning): Likewise.
(c_common_get_alias_set): Likewise.
* dse.h (dse_record_singleton_alias_set): Update declaration.
(dse_invalidate_singleton_alias_set): Likewise.
* emit-rtl.h (set_mem_alias_set): Likewise.
* c-common.h (c_common_get_alias_set): Likewise.
* print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
* print-tree.c (print_node): Likewise.
* config/alpha/alpha.c (alpha_sr_alias_set): Change to
alias_set_type.
(alpha_setup_incoming_varargs): Use alias_set_type.
* config/i386/i386.c (setup_incoming_varargs_64): Use
alias_set_type.
(setup_incoming_varargs_ms_64): Likewise.
(ix86_GOT_alias_set): Likewise.
* config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
* config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
(set): Change to alias_set_type.
(get_TOC_alias_set): Use alias_set_type.
* config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
declaration.
* config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
* config/sparc/sparc.c (sparc_sr_alias_set): Change to
alias_set_type.
(struct_value_alias_set): Likewise.
* Makefile.in (GTFILES): Add $(srcdir)/alias.h.
ada/:
* misc.c (gnat_get_alias_set): Change return type to
alias_set_type.
cp/:
* cp-objcp-common.c (cxx_get_alias_set): Change return type to
alias_set_type.
* cp/cp-tree.h (cxx_get_alias_set): Update declaration.
fortran:/
* f95-lang.c (gfc_get_alias_set): Change return type to
alias_set_type.
From-SVN: r127362
2007-08-11 19:21:56 +02:00
|
|
|
extern void set_mem_alias_set (rtx, alias_set_type);
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
|
|
|
/* Set the alignment of MEM to ALIGN bits. */
|
|
|
|
extern void set_mem_align (rtx, unsigned int);
|
|
|
|
|
2009-10-26 22:55:59 +01:00
|
|
|
/* Set the address space of MEM to ADDRSPACE. */
|
|
|
|
extern void set_mem_addr_space (rtx, addr_space_t);
|
|
|
|
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
/* Set the expr for MEM to EXPR. */
|
|
|
|
extern void set_mem_expr (rtx, tree);
|
|
|
|
|
|
|
|
/* Set the offset for MEM to OFFSET. */
|
2011-07-19 19:43:27 +02:00
|
|
|
extern void set_mem_offset (rtx, HOST_WIDE_INT);
|
|
|
|
|
|
|
|
/* Clear the offset recorded for MEM. */
|
|
|
|
extern void clear_mem_offset (rtx);
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
|
|
|
/* Set the size for MEM to SIZE. */
|
2011-07-19 19:43:15 +02:00
|
|
|
extern void set_mem_size (rtx, HOST_WIDE_INT);
|
|
|
|
|
|
|
|
/* Clear the size recorded for MEM. */
|
|
|
|
extern void clear_mem_size (rtx);
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
2008-10-12 22:26:24 +02:00
|
|
|
/* Set the attributes for MEM appropriate for a spill slot. */
|
|
|
|
extern void set_mem_attrs_for_spill (rtx);
|
2008-10-21 22:48:16 +02:00
|
|
|
extern tree get_spill_slot_decl (bool);
|
2008-10-12 22:26:24 +02:00
|
|
|
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
/* Return a memory reference like MEMREF, but with its address changed to
|
|
|
|
ADDR. The caller is asserting that the actual piece of memory pointed
|
|
|
|
to is the same, just the form of the address is being changed, such as
|
|
|
|
by putting something into a register. */
|
2014-05-17 09:00:02 +02:00
|
|
|
extern rtx replace_equiv_address (rtx, rtx, bool = false);
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
|
|
|
/* Likewise, but the reference is not required to be valid. */
|
2014-05-17 09:00:02 +02:00
|
|
|
extern rtx replace_equiv_address_nv (rtx, rtx, bool = false);
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
extern rtx gen_blockage (void);
|
|
|
|
extern rtvec gen_rtvec (int, ...);
|
|
|
|
extern rtx copy_insn_1 (rtx);
|
|
|
|
extern rtx copy_insn (rtx);
|
Use rtx subclasses in more places in reorg.c
gcc/
2014-08-28 David Malcolm <dmalcolm@redhat.com>
* emit-rtl.h (copy_delay_slot_insn): Strengthen return type and
param from rtx to rtx_insn *.
* emit-rtl.c (copy_delay_slot_insn): Likewise.
* reorg.c (skip_consecutive_labels): Strengthen return type, param
and local "insn" from rtx to rtx_insn *.
(unfilled_slots_base): Strengthen type from rtx * to rtx_insn **.
(unfilled_slots_next): Likewise.
(function_return_label): Strengthen from rtx to rtx_code_label *.
(function_simple_return_label): Likewise.
(first_active_target_insn): Strengthen return type and param from
rtx to rtx_insn *.
(find_end_label): Strengthen return type from rtx to
rtx_code_label *; strengthen locals as appropriate.
(emit_delay_sequence): Strengthen return type, param "insn" and
local "seq_insn" from rtx to rtx_insn *. Strengthen param "list"
and local "li" from rtx to rtx_insn_list *, using methods of
rtx_insn_list for clarity and typesafety.
(add_to_delay_list): Strengthen return type and param "insn" from
rtx to rtx_insn *. Strengthen param "delay_list" from rtx to
rtx_insn_list * and use methods of rtx_insn_list.
(delete_from_delay_slot): Strengthen return type, param "insn",
locals "trial", "seq_insn", "prev" from rtx to rtx_insn *.
Strengthen local "seq" from rtx to rtx_sequence *, and local
"delay_list" from rtx to rtx_insn_list *, using methods of
rtx_sequence for clarity and type-safety.
(delete_scheduled_jump): Add checked cast when invoking
delete_from_delay_slot. Strengthen local "trial" from rtx to
rtx_insn *.
(optimize_skip): Strengthen return type and local "delay_list"
from rtx to rtx_insn_list *. Strengthen local "trial" from rtx to
rtx_insn *.
(steal_delay_list_from_target): Strengthen return type, param
"delay_list" and local "new_delay_list" from rtx to
rtx_insn_list *. Strengthen param "seq" from rtx to
rtx_sequence *. Strengthen param "pnew_thread" from rtx * to
rtx_insn **.
Split out local "temp" into multiple more-tightly scoped locals:
sometimes an rtx_insn_list *, and once a rtx_insn *. Use methods
of rtx_insn_list and rtx_sequence for clarity and typesafety.
Strengthen locals named "trial" from rtx to rtx_insn *.
(steal_delay_list_from_fallthrough): Strengthen return type and
param "delay_list" from rtx to rtx_insn_list *. Strengthen param
"seq" from rtx to rtx_sequence *. Use methods of rtx_sequence.
Strengthen local "trial" from rtx to rtx_insn *.
(try_merge_delay_insns): Strength local "merged_insns" from rtx
to rtx_insn_list * and use its methods. Strengthen local "pat"
from rtx to rtx_sequence * and use its methods. Strengthen locals
"dtrial" and "new_rtx" from rtx to rtx_insn *.
(get_label_before): Strengthen return type and local "label" from
rtx to rtx_insn *.
(fill_simple_delay_slots): Likewise for locals "insn", "trial",
"next_trial", "next", prev". Strengthen local "delay_list" from
rtx to rtx_insn_list * Strengthen local "tmp" from rtx * to
rtx_insn **.
(follow_jumps): Strengthen return type, param "label" and locals
"insn", "next", "value", "this_label" from rtx to rtx_insn *.
(fill_slots_from_thread): Strengthen return type, param
"delay_list" from rtx to rtx_insn_list *. Strengthen params
"insn", "thread", "opposite_thread" and locals "new_thread",
"trial", "temp", "ninsn" from rtx to rtx_insn *. Introduce local
"sequence" from a checked cast to rtx_sequence so that we can call
steal_delay_list_from_target and steal_delay_list_from_fallthrough
with an rtx_sequence *.
(fill_eager_delay_slots): Strengthen locals "insn", "target_label",
"insn_at_target", "fallthrough_insn" from rtx to rtx_insn *.
Strengthen local "delay_list" from rtx to rtx_insn_list *.
(relax_delay_slots): Strengthen param "first" and locals "insn",
"next", "trial", "delay_insn", "target_label" from rtx to
rtx_insn *. Strengthen local "pat" from rtx to rtx_sequence *.
Introduce a local "trial_seq" for PATTERN (trial) of type
rtx_sequence *, in both cases using methods of rtx_sequence.
(dbr_schedule): Strengthen param "first" and locals "insn",
"next", "epilogue_insn" from rtx to rtx_insn *.
From-SVN: r214684
2014-08-28 20:48:00 +02:00
|
|
|
extern rtx_insn *copy_delay_slot_insn (rtx_insn *);
|
decl.c, [...]: Remove redundant enum from machine_mode.
gcc/ada/
* gcc-interface/decl.c, gcc-interface/gigi.h, gcc-interface/misc.c,
gcc-interface/trans.c, gcc-interface/utils.c, gcc-interface/utils2.c:
Remove redundant enum from machine_mode.
gcc/c-family/
* c-common.c, c-common.h, c-cppbuiltin.c, c-lex.c: Remove redundant
enum from machine_mode.
gcc/c/
* c-decl.c, c-tree.h, c-typeck.c: Remove redundant enum from
machine_mode.
gcc/cp/
* constexpr.c: Remove redundant enum from machine_mode.
gcc/fortran/
* trans-types.c, trans-types.h: Remove redundant enum from
machine_mode.
gcc/go/
* go-lang.c: Remove redundant enum from machine_mode.
gcc/java/
* builtins.c, java-tree.h, typeck.c: Remove redundant enum from
machine_mode.
gcc/lto/
* lto-lang.c: Remove redundant enum from machine_mode.
gcc/
* addresses.h, alias.c, asan.c, auto-inc-dec.c, bt-load.c, builtins.c,
builtins.h, caller-save.c, calls.c, calls.h, cfgexpand.c, cfgloop.h,
cfgrtl.c, combine.c, compare-elim.c, config/aarch64/aarch64-builtins.c,
config/aarch64/aarch64-protos.h, config/aarch64/aarch64-simd.md,
config/aarch64/aarch64.c, config/aarch64/aarch64.h,
config/aarch64/aarch64.md, config/alpha/alpha-protos.h,
config/alpha/alpha.c, config/arc/arc-protos.h, config/arc/arc.c,
config/arc/arc.h, config/arc/predicates.md,
config/arm/aarch-common-protos.h, config/arm/aarch-common.c,
config/arm/arm-protos.h, config/arm/arm.c, config/arm/arm.h,
config/arm/arm.md, config/arm/neon.md, config/arm/thumb2.md,
config/avr/avr-log.c, config/avr/avr-protos.h, config/avr/avr.c,
config/avr/avr.md, config/bfin/bfin-protos.h, config/bfin/bfin.c,
config/c6x/c6x-protos.h, config/c6x/c6x.c, config/c6x/c6x.md,
config/cr16/cr16-protos.h, config/cr16/cr16.c,
config/cris/cris-protos.h, config/cris/cris.c, config/cris/cris.md,
config/darwin-protos.h, config/darwin.c,
config/epiphany/epiphany-protos.h, config/epiphany/epiphany.c,
config/epiphany/epiphany.md, config/fr30/fr30.c,
config/frv/frv-protos.h, config/frv/frv.c, config/frv/predicates.md,
config/h8300/h8300-protos.h, config/h8300/h8300.c,
config/i386/i386-builtin-types.awk, config/i386/i386-protos.h,
config/i386/i386.c, config/i386/i386.md, config/i386/predicates.md,
config/i386/sse.md, config/i386/sync.md, config/ia64/ia64-protos.h,
config/ia64/ia64.c, config/iq2000/iq2000-protos.h,
config/iq2000/iq2000.c, config/iq2000/iq2000.md,
config/lm32/lm32-protos.h, config/lm32/lm32.c,
config/m32c/m32c-protos.h, config/m32c/m32c.c,
config/m32r/m32r-protos.h, config/m32r/m32r.c,
config/m68k/m68k-protos.h, config/m68k/m68k.c,
config/mcore/mcore-protos.h, config/mcore/mcore.c,
config/mcore/mcore.md, config/mep/mep-protos.h, config/mep/mep.c,
config/microblaze/microblaze-protos.h, config/microblaze/microblaze.c,
config/mips/mips-protos.h, config/mips/mips.c,
config/mmix/mmix-protos.h, config/mmix/mmix.c,
config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c,
config/moxie/moxie.c, config/msp430/msp430-protos.h,
config/msp430/msp430.c, config/nds32/nds32-cost.c,
config/nds32/nds32-intrinsic.c, config/nds32/nds32-md-auxiliary.c,
config/nds32/nds32-protos.h, config/nds32/nds32.c,
config/nios2/nios2-protos.h, config/nios2/nios2.c,
config/pa/pa-protos.h, config/pa/pa.c, config/pdp11/pdp11-protos.h,
config/pdp11/pdp11.c, config/rl78/rl78-protos.h, config/rl78/rl78.c,
config/rs6000/altivec.md, config/rs6000/rs6000-c.c,
config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c,
config/rs6000/rs6000.h, config/rx/rx-protos.h, config/rx/rx.c,
config/s390/predicates.md, config/s390/s390-protos.h,
config/s390/s390.c, config/s390/s390.h, config/s390/s390.md,
config/sh/predicates.md, config/sh/sh-protos.h, config/sh/sh.c,
config/sh/sh.md, config/sparc/predicates.md,
config/sparc/sparc-protos.h, config/sparc/sparc.c,
config/sparc/sparc.md, config/spu/spu-protos.h, config/spu/spu.c,
config/stormy16/stormy16-protos.h, config/stormy16/stormy16.c,
config/tilegx/tilegx-protos.h, config/tilegx/tilegx.c,
config/tilegx/tilegx.md, config/tilepro/tilepro-protos.h,
config/tilepro/tilepro.c, config/v850/v850-protos.h,
config/v850/v850.c, config/v850/v850.md, config/vax/vax-protos.h,
config/vax/vax.c, config/vms/vms-c.c, config/xtensa/xtensa-protos.h,
config/xtensa/xtensa.c, coverage.c, cprop.c, cse.c, cselib.c, cselib.h,
dbxout.c, ddg.c, df-problems.c, dfp.c, dfp.h, doc/md.texi,
doc/rtl.texi, doc/tm.texi, doc/tm.texi.in, dojump.c, dse.c,
dwarf2cfi.c, dwarf2out.c, dwarf2out.h, emit-rtl.c, emit-rtl.h,
except.c, explow.c, expmed.c, expmed.h, expr.c, expr.h, final.c,
fixed-value.c, fixed-value.h, fold-const.c, function.c, function.h,
fwprop.c, gcse.c, gengenrtl.c, genmodes.c, genopinit.c, genoutput.c,
genpreds.c, genrecog.c, gensupport.c, gimple-ssa-strength-reduction.c,
graphite-clast-to-gimple.c, haifa-sched.c, hooks.c, hooks.h, ifcvt.c,
internal-fn.c, ira-build.c, ira-color.c, ira-conflicts.c, ira-costs.c,
ira-emit.c, ira-int.h, ira-lives.c, ira.c, ira.h, jump.c, langhooks.h,
libfuncs.h, lists.c, loop-doloop.c, loop-invariant.c, loop-iv.c,
loop-unroll.c, lower-subreg.c, lower-subreg.h, lra-assigns.c,
lra-constraints.c, lra-eliminations.c, lra-int.h, lra-lives.c,
lra-spills.c, lra.c, lra.h, machmode.h, omp-low.c, optabs.c, optabs.h,
output.h, postreload.c, print-tree.c, read-rtl.c, real.c, real.h,
recog.c, recog.h, ree.c, reg-stack.c, regcprop.c, reginfo.c,
regrename.c, regs.h, reload.c, reload.h, reload1.c, rtl.c, rtl.h,
rtlanal.c, rtlhash.c, rtlhooks-def.h, rtlhooks.c, sched-deps.c,
sel-sched-dump.c, sel-sched-ir.c, sel-sched-ir.h, sel-sched.c,
simplify-rtx.c, stmt.c, stor-layout.c, stor-layout.h, target.def,
targhooks.c, targhooks.h, tree-affine.c, tree-call-cdce.c,
tree-complex.c, tree-data-ref.c, tree-dfa.c, tree-if-conv.c,
tree-inline.c, tree-outof-ssa.c, tree-scalar-evolution.c,
tree-ssa-address.c, tree-ssa-ccp.c, tree-ssa-loop-ivopts.c,
tree-ssa-loop-ivopts.h, tree-ssa-loop-manip.c,
tree-ssa-loop-prefetch.c, tree-ssa-math-opts.c, tree-ssa-reassoc.c,
tree-ssa-sccvn.c, tree-streamer-in.c, tree-switch-conversion.c,
tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop.c,
tree-vect-patterns.c, tree-vect-slp.c, tree-vect-stmts.c,
tree-vrp.c, tree.c, tree.h, tsan.c, ubsan.c, valtrack.c,
var-tracking.c, varasm.c: Remove redundant enum from
machine_mode.
gcc/
* gengtype.c (main): Treat machine_mode as a scalar typedef.
* genmodes.c (emit_insn_modes_h): Hide inline functions if
USED_FOR_TARGET.
From-SVN: r216834
2014-10-29 13:02:45 +01:00
|
|
|
extern rtx gen_int_mode (HOST_WIDE_INT, machine_mode);
|
2014-09-09 17:20:07 +02:00
|
|
|
extern rtx_insn *emit_copy_of_insn_after (rtx_insn *, rtx_insn *);
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
extern void set_reg_attrs_from_value (rtx, rtx);
|
|
|
|
extern void set_reg_attrs_for_parm (rtx, rtx);
|
|
|
|
extern void set_reg_attrs_for_decl_rtl (tree t, rtx x);
|
decl.c, [...]: Remove redundant enum from machine_mode.
gcc/ada/
* gcc-interface/decl.c, gcc-interface/gigi.h, gcc-interface/misc.c,
gcc-interface/trans.c, gcc-interface/utils.c, gcc-interface/utils2.c:
Remove redundant enum from machine_mode.
gcc/c-family/
* c-common.c, c-common.h, c-cppbuiltin.c, c-lex.c: Remove redundant
enum from machine_mode.
gcc/c/
* c-decl.c, c-tree.h, c-typeck.c: Remove redundant enum from
machine_mode.
gcc/cp/
* constexpr.c: Remove redundant enum from machine_mode.
gcc/fortran/
* trans-types.c, trans-types.h: Remove redundant enum from
machine_mode.
gcc/go/
* go-lang.c: Remove redundant enum from machine_mode.
gcc/java/
* builtins.c, java-tree.h, typeck.c: Remove redundant enum from
machine_mode.
gcc/lto/
* lto-lang.c: Remove redundant enum from machine_mode.
gcc/
* addresses.h, alias.c, asan.c, auto-inc-dec.c, bt-load.c, builtins.c,
builtins.h, caller-save.c, calls.c, calls.h, cfgexpand.c, cfgloop.h,
cfgrtl.c, combine.c, compare-elim.c, config/aarch64/aarch64-builtins.c,
config/aarch64/aarch64-protos.h, config/aarch64/aarch64-simd.md,
config/aarch64/aarch64.c, config/aarch64/aarch64.h,
config/aarch64/aarch64.md, config/alpha/alpha-protos.h,
config/alpha/alpha.c, config/arc/arc-protos.h, config/arc/arc.c,
config/arc/arc.h, config/arc/predicates.md,
config/arm/aarch-common-protos.h, config/arm/aarch-common.c,
config/arm/arm-protos.h, config/arm/arm.c, config/arm/arm.h,
config/arm/arm.md, config/arm/neon.md, config/arm/thumb2.md,
config/avr/avr-log.c, config/avr/avr-protos.h, config/avr/avr.c,
config/avr/avr.md, config/bfin/bfin-protos.h, config/bfin/bfin.c,
config/c6x/c6x-protos.h, config/c6x/c6x.c, config/c6x/c6x.md,
config/cr16/cr16-protos.h, config/cr16/cr16.c,
config/cris/cris-protos.h, config/cris/cris.c, config/cris/cris.md,
config/darwin-protos.h, config/darwin.c,
config/epiphany/epiphany-protos.h, config/epiphany/epiphany.c,
config/epiphany/epiphany.md, config/fr30/fr30.c,
config/frv/frv-protos.h, config/frv/frv.c, config/frv/predicates.md,
config/h8300/h8300-protos.h, config/h8300/h8300.c,
config/i386/i386-builtin-types.awk, config/i386/i386-protos.h,
config/i386/i386.c, config/i386/i386.md, config/i386/predicates.md,
config/i386/sse.md, config/i386/sync.md, config/ia64/ia64-protos.h,
config/ia64/ia64.c, config/iq2000/iq2000-protos.h,
config/iq2000/iq2000.c, config/iq2000/iq2000.md,
config/lm32/lm32-protos.h, config/lm32/lm32.c,
config/m32c/m32c-protos.h, config/m32c/m32c.c,
config/m32r/m32r-protos.h, config/m32r/m32r.c,
config/m68k/m68k-protos.h, config/m68k/m68k.c,
config/mcore/mcore-protos.h, config/mcore/mcore.c,
config/mcore/mcore.md, config/mep/mep-protos.h, config/mep/mep.c,
config/microblaze/microblaze-protos.h, config/microblaze/microblaze.c,
config/mips/mips-protos.h, config/mips/mips.c,
config/mmix/mmix-protos.h, config/mmix/mmix.c,
config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c,
config/moxie/moxie.c, config/msp430/msp430-protos.h,
config/msp430/msp430.c, config/nds32/nds32-cost.c,
config/nds32/nds32-intrinsic.c, config/nds32/nds32-md-auxiliary.c,
config/nds32/nds32-protos.h, config/nds32/nds32.c,
config/nios2/nios2-protos.h, config/nios2/nios2.c,
config/pa/pa-protos.h, config/pa/pa.c, config/pdp11/pdp11-protos.h,
config/pdp11/pdp11.c, config/rl78/rl78-protos.h, config/rl78/rl78.c,
config/rs6000/altivec.md, config/rs6000/rs6000-c.c,
config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c,
config/rs6000/rs6000.h, config/rx/rx-protos.h, config/rx/rx.c,
config/s390/predicates.md, config/s390/s390-protos.h,
config/s390/s390.c, config/s390/s390.h, config/s390/s390.md,
config/sh/predicates.md, config/sh/sh-protos.h, config/sh/sh.c,
config/sh/sh.md, config/sparc/predicates.md,
config/sparc/sparc-protos.h, config/sparc/sparc.c,
config/sparc/sparc.md, config/spu/spu-protos.h, config/spu/spu.c,
config/stormy16/stormy16-protos.h, config/stormy16/stormy16.c,
config/tilegx/tilegx-protos.h, config/tilegx/tilegx.c,
config/tilegx/tilegx.md, config/tilepro/tilepro-protos.h,
config/tilepro/tilepro.c, config/v850/v850-protos.h,
config/v850/v850.c, config/v850/v850.md, config/vax/vax-protos.h,
config/vax/vax.c, config/vms/vms-c.c, config/xtensa/xtensa-protos.h,
config/xtensa/xtensa.c, coverage.c, cprop.c, cse.c, cselib.c, cselib.h,
dbxout.c, ddg.c, df-problems.c, dfp.c, dfp.h, doc/md.texi,
doc/rtl.texi, doc/tm.texi, doc/tm.texi.in, dojump.c, dse.c,
dwarf2cfi.c, dwarf2out.c, dwarf2out.h, emit-rtl.c, emit-rtl.h,
except.c, explow.c, expmed.c, expmed.h, expr.c, expr.h, final.c,
fixed-value.c, fixed-value.h, fold-const.c, function.c, function.h,
fwprop.c, gcse.c, gengenrtl.c, genmodes.c, genopinit.c, genoutput.c,
genpreds.c, genrecog.c, gensupport.c, gimple-ssa-strength-reduction.c,
graphite-clast-to-gimple.c, haifa-sched.c, hooks.c, hooks.h, ifcvt.c,
internal-fn.c, ira-build.c, ira-color.c, ira-conflicts.c, ira-costs.c,
ira-emit.c, ira-int.h, ira-lives.c, ira.c, ira.h, jump.c, langhooks.h,
libfuncs.h, lists.c, loop-doloop.c, loop-invariant.c, loop-iv.c,
loop-unroll.c, lower-subreg.c, lower-subreg.h, lra-assigns.c,
lra-constraints.c, lra-eliminations.c, lra-int.h, lra-lives.c,
lra-spills.c, lra.c, lra.h, machmode.h, omp-low.c, optabs.c, optabs.h,
output.h, postreload.c, print-tree.c, read-rtl.c, real.c, real.h,
recog.c, recog.h, ree.c, reg-stack.c, regcprop.c, reginfo.c,
regrename.c, regs.h, reload.c, reload.h, reload1.c, rtl.c, rtl.h,
rtlanal.c, rtlhash.c, rtlhooks-def.h, rtlhooks.c, sched-deps.c,
sel-sched-dump.c, sel-sched-ir.c, sel-sched-ir.h, sel-sched.c,
simplify-rtx.c, stmt.c, stor-layout.c, stor-layout.h, target.def,
targhooks.c, targhooks.h, tree-affine.c, tree-call-cdce.c,
tree-complex.c, tree-data-ref.c, tree-dfa.c, tree-if-conv.c,
tree-inline.c, tree-outof-ssa.c, tree-scalar-evolution.c,
tree-ssa-address.c, tree-ssa-ccp.c, tree-ssa-loop-ivopts.c,
tree-ssa-loop-ivopts.h, tree-ssa-loop-manip.c,
tree-ssa-loop-prefetch.c, tree-ssa-math-opts.c, tree-ssa-reassoc.c,
tree-ssa-sccvn.c, tree-streamer-in.c, tree-switch-conversion.c,
tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop.c,
tree-vect-patterns.c, tree-vect-slp.c, tree-vect-stmts.c,
tree-vrp.c, tree.c, tree.h, tsan.c, ubsan.c, valtrack.c,
var-tracking.c, varasm.c: Remove redundant enum from
machine_mode.
gcc/
* gengtype.c (main): Treat machine_mode as a scalar typedef.
* genmodes.c (emit_insn_modes_h): Hide inline functions if
USED_FOR_TARGET.
From-SVN: r216834
2014-10-29 13:02:45 +01:00
|
|
|
extern void adjust_reg_mode (rtx, machine_mode);
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
extern int mem_expr_equal_p (const_tree, const_tree);
|
|
|
|
|
2012-06-20 03:05:25 +02:00
|
|
|
extern bool need_atomic_barrier_p (enum memmodel, bool);
|
|
|
|
|
function.h (struct emit_status): Delete x_first_insn, x_last_insn and sequence_stack.
* function.h (struct emit_status): Delete x_first_insn, x_last_insn
and sequence_stack. Add seq.
(seq_stack): Delete.
* function.c (prepare_function_start): Don't access x_last_insn.
* emit-rtl.h (get_current_sequence, get_topmost_sequence): New.
(get_insns, set_first_insn, get_last_insn, set_last_insn): Use them.
* emit_rtl.c (start_sequence, push_topmost_sequence,
pop_topmost_sequence, end_sequence, in_sequence_p, init_emit): Use
sequence accessors.
(get_last_insn_anywhere, add_insn_after_nobb, add_insn_before_nobb,
remove_insn): Likewise. Simplify.
* config/m32c/m32c.c (m32c_leaf_function_p): Use push_topmost_sequence
and pop_topmost_sequence.
(m32c_function_needs_enter): Use get_topmost_sequence. Ignore
debug insns.
* config/rs6000/rs6000.c (rs6000_call_aix): Use get_current_sequence.
From-SVN: r222112
2015-04-15 08:05:44 +02:00
|
|
|
/* Return the current sequence. */
|
|
|
|
|
|
|
|
static inline struct sequence_stack *
|
|
|
|
get_current_sequence (void)
|
|
|
|
{
|
|
|
|
return &crtl->emit.seq;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Return the outermost sequence. */
|
|
|
|
|
|
|
|
static inline struct sequence_stack *
|
|
|
|
get_topmost_sequence (void)
|
|
|
|
{
|
|
|
|
struct sequence_stack *seq, *top;
|
|
|
|
|
|
|
|
seq = get_current_sequence ();
|
|
|
|
do
|
|
|
|
{
|
|
|
|
top = seq;
|
|
|
|
seq = seq->next;
|
|
|
|
} while (seq);
|
|
|
|
return top;
|
|
|
|
}
|
|
|
|
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
/* Return the first insn of the current sequence or current function. */
|
|
|
|
|
2014-08-19 20:24:21 +02:00
|
|
|
static inline rtx_insn *
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
get_insns (void)
|
|
|
|
{
|
function.h (struct emit_status): Delete x_first_insn, x_last_insn and sequence_stack.
* function.h (struct emit_status): Delete x_first_insn, x_last_insn
and sequence_stack. Add seq.
(seq_stack): Delete.
* function.c (prepare_function_start): Don't access x_last_insn.
* emit-rtl.h (get_current_sequence, get_topmost_sequence): New.
(get_insns, set_first_insn, get_last_insn, set_last_insn): Use them.
* emit_rtl.c (start_sequence, push_topmost_sequence,
pop_topmost_sequence, end_sequence, in_sequence_p, init_emit): Use
sequence accessors.
(get_last_insn_anywhere, add_insn_after_nobb, add_insn_before_nobb,
remove_insn): Likewise. Simplify.
* config/m32c/m32c.c (m32c_leaf_function_p): Use push_topmost_sequence
and pop_topmost_sequence.
(m32c_function_needs_enter): Use get_topmost_sequence. Ignore
debug insns.
* config/rs6000/rs6000.c (rs6000_call_aix): Use get_current_sequence.
From-SVN: r222112
2015-04-15 08:05:44 +02:00
|
|
|
return get_current_sequence ()->first;
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Specify a new insn as the first in the chain. */
|
|
|
|
|
|
|
|
static inline void
|
2014-08-26 21:31:29 +02:00
|
|
|
set_first_insn (rtx_insn *insn)
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
{
|
cgraph.h (varpool_first_static_initializer, [...]): Make checking only when checking enabled.
* cgraph.h (varpool_first_static_initializer,
varpool_next_static_initializer): Make checking only when
checking enabled.
* tree-vectorizer.h (vinfo_for_stmt): Remove check.
(set_vinfo_for_stmt, get_earlier_stmt, is_loop_header_bb_p): Change
gcc_assert to gcc_checking_assert.
* tree-flow-inline.h (gimple_vop, get_var_ann, relink_imm_use, phi_nodes
set_phi_nodes, phi_arg_index_from_use, op_iter_next_use,
op_iter_next_def, op_iter_next_tree, op_iter_init, op_iter_init_use,
op_iter_init_phiuse, op_iter_init_phidef, array_ref_contains_indirect_ref,
ref_contains_array_ref): Use gcc_checking_assert.
* emit-rtl.h (set_first_insn, set_last_insn): Likewise.
* tree-ssa-live.h (var_to_partition, var_to_partition_to_var,
partition_is_global, live_on_entry, live_on_exit,
live_merge_and_clear): Likewise.
* system.h (gcc_checking_assert): New macro.
From-SVN: r160489
2010-06-09 17:41:23 +02:00
|
|
|
gcc_checking_assert (!insn || !PREV_INSN (insn));
|
function.h (struct emit_status): Delete x_first_insn, x_last_insn and sequence_stack.
* function.h (struct emit_status): Delete x_first_insn, x_last_insn
and sequence_stack. Add seq.
(seq_stack): Delete.
* function.c (prepare_function_start): Don't access x_last_insn.
* emit-rtl.h (get_current_sequence, get_topmost_sequence): New.
(get_insns, set_first_insn, get_last_insn, set_last_insn): Use them.
* emit_rtl.c (start_sequence, push_topmost_sequence,
pop_topmost_sequence, end_sequence, in_sequence_p, init_emit): Use
sequence accessors.
(get_last_insn_anywhere, add_insn_after_nobb, add_insn_before_nobb,
remove_insn): Likewise. Simplify.
* config/m32c/m32c.c (m32c_leaf_function_p): Use push_topmost_sequence
and pop_topmost_sequence.
(m32c_function_needs_enter): Use get_topmost_sequence. Ignore
debug insns.
* config/rs6000/rs6000.c (rs6000_call_aix): Use get_current_sequence.
From-SVN: r222112
2015-04-15 08:05:44 +02:00
|
|
|
get_current_sequence ()->first = insn;
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Return the last insn emitted in current sequence or current function. */
|
|
|
|
|
2014-08-19 20:24:21 +02:00
|
|
|
static inline rtx_insn *
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
get_last_insn (void)
|
|
|
|
{
|
function.h (struct emit_status): Delete x_first_insn, x_last_insn and sequence_stack.
* function.h (struct emit_status): Delete x_first_insn, x_last_insn
and sequence_stack. Add seq.
(seq_stack): Delete.
* function.c (prepare_function_start): Don't access x_last_insn.
* emit-rtl.h (get_current_sequence, get_topmost_sequence): New.
(get_insns, set_first_insn, get_last_insn, set_last_insn): Use them.
* emit_rtl.c (start_sequence, push_topmost_sequence,
pop_topmost_sequence, end_sequence, in_sequence_p, init_emit): Use
sequence accessors.
(get_last_insn_anywhere, add_insn_after_nobb, add_insn_before_nobb,
remove_insn): Likewise. Simplify.
* config/m32c/m32c.c (m32c_leaf_function_p): Use push_topmost_sequence
and pop_topmost_sequence.
(m32c_function_needs_enter): Use get_topmost_sequence. Ignore
debug insns.
* config/rs6000/rs6000.c (rs6000_call_aix): Use get_current_sequence.
From-SVN: r222112
2015-04-15 08:05:44 +02:00
|
|
|
return get_current_sequence ()->last;
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Specify a new insn as the last in the chain. */
|
|
|
|
|
|
|
|
static inline void
|
2014-08-26 21:31:29 +02:00
|
|
|
set_last_insn (rtx_insn *insn)
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
{
|
cgraph.h (varpool_first_static_initializer, [...]): Make checking only when checking enabled.
* cgraph.h (varpool_first_static_initializer,
varpool_next_static_initializer): Make checking only when
checking enabled.
* tree-vectorizer.h (vinfo_for_stmt): Remove check.
(set_vinfo_for_stmt, get_earlier_stmt, is_loop_header_bb_p): Change
gcc_assert to gcc_checking_assert.
* tree-flow-inline.h (gimple_vop, get_var_ann, relink_imm_use, phi_nodes
set_phi_nodes, phi_arg_index_from_use, op_iter_next_use,
op_iter_next_def, op_iter_next_tree, op_iter_init, op_iter_init_use,
op_iter_init_phiuse, op_iter_init_phidef, array_ref_contains_indirect_ref,
ref_contains_array_ref): Use gcc_checking_assert.
* emit-rtl.h (set_first_insn, set_last_insn): Likewise.
* tree-ssa-live.h (var_to_partition, var_to_partition_to_var,
partition_is_global, live_on_entry, live_on_exit,
live_merge_and_clear): Likewise.
* system.h (gcc_checking_assert): New macro.
From-SVN: r160489
2010-06-09 17:41:23 +02:00
|
|
|
gcc_checking_assert (!insn || !NEXT_INSN (insn));
|
function.h (struct emit_status): Delete x_first_insn, x_last_insn and sequence_stack.
* function.h (struct emit_status): Delete x_first_insn, x_last_insn
and sequence_stack. Add seq.
(seq_stack): Delete.
* function.c (prepare_function_start): Don't access x_last_insn.
* emit-rtl.h (get_current_sequence, get_topmost_sequence): New.
(get_insns, set_first_insn, get_last_insn, set_last_insn): Use them.
* emit_rtl.c (start_sequence, push_topmost_sequence,
pop_topmost_sequence, end_sequence, in_sequence_p, init_emit): Use
sequence accessors.
(get_last_insn_anywhere, add_insn_after_nobb, add_insn_before_nobb,
remove_insn): Likewise. Simplify.
* config/m32c/m32c.c (m32c_leaf_function_p): Use push_topmost_sequence
and pop_topmost_sequence.
(m32c_function_needs_enter): Use get_topmost_sequence. Ignore
debug insns.
* config/rs6000/rs6000.c (rs6000_call_aix): Use get_current_sequence.
From-SVN: r222112
2015-04-15 08:05:44 +02:00
|
|
|
get_current_sequence ()->last = insn;
|
fwprop.c: Make emit-rtl.h include last.
* fwprop.c: Make emit-rtl.h include last.
* rtlanal.c: Include emit-rtl.h.
* genautomata.c: Output emit-rtl include into insn-automata.c
* df-scan.c: Include emit-rtl.h.
* haifa-sched.c: Indlude emit-rtl.h.
* mode-switching.c: Indlude emit-rtl.h.
* graph.c: Indlude emit-rtl.h.
* sel-sched.c: Include emit-rtl.h.
* sel-sched-ir.c: Include emit-rtl.h.
* ira-build.c: Include emit-rtl.h.
* emit-rtl.c: (first_insn, last_insn): Remove defines.
(get_insns, set_first_insn, get_last_insn, set_last_insn, get_max_uid):
Move to emit-rtl.h.
(set_new_first_and_last_insn, get_last_insn_anywhere, get_first_nonnote_insn,
get_last_nonnote_insn, try_split, make_call_insn_raw, add_insn_after,
add_insn_before, remove_insn, delete_insns_since, reorder_insns_nobb,
emit_insn_after_1, emit_debug_insn_before, emit_insn, start_sequence,
push_to_sequence, push_to_sequence2, push_topmost_sequence, end_sequence,
copy_insn): Use accessor functions.
* emit-rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p): Move here from rtl.h
(get_insns, set_first-insn, get_last_insn, set_last_insn, get_max_uid):
Move here from emit-rtl.c; make inline.
* cfglayout.h: Include emit-rtl.h
* rtl.h (gen_blockage, gen_rtvec, copy_insn_1, copy_insn,
gen_int_mode, emit_copy_of_insn_after, set_reg_attrs_from_value,
set_reg_attrs_for_parm, set_reg_attrs_for_decl_rtl, adjust_reg_mode,
mem_expr_equal_p, get_insns, set_first-insn, get_last_insn, set_last_insn,
get_max_uid): Move to emit-rtl.h.
* reg-stack.c: Include emit-rtl.h
* dce.c: Likewise.
From-SVN: r160111
2010-06-01 17:49:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Return a number larger than any instruction's uid in this function. */
|
|
|
|
|
|
|
|
static inline int
|
|
|
|
get_max_uid (void)
|
|
|
|
{
|
|
|
|
return crtl->emit.x_cur_insn_uid;
|
|
|
|
}
|
2013-11-19 13:31:09 +01:00
|
|
|
|
|
|
|
extern void set_decl_incoming_rtl (tree, rtx, bool);
|
|
|
|
|
dojump.h: New header file.
2015-10-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
* dojump.h: New header file.
* explow.h: Likewise.
* expr.h: Remove includes.
Move expmed.c prototypes to expmed.h.
Move dojump.c prototypes to dojump.h.
Move alias.c prototypes to alias.h.
Move explow.c prototypes to explow.h.
Move calls.c prototypes to calls.h.
Move emit-rtl.c prototypes to emit-rtl.h.
Move varasm.c prototypes to varasm.h.
Move stmt.c prototypes to stmt.h.
(saved_pending_stack_adjust): Move to dojump.h.
(adjust_address): Move to explow.h.
(adjust_address_nv): Move to emit-rtl.h.
(adjust_bitfield_address): Likewise.
(adjust_bitfield_address_size): Likewise.
(adjust_bitfield_address_nv): Likewise.
(adjust_automodify_address_nv): Likewise.
* explow.c (expr_size): Move to expr.c.
(int_expr_size): Likewise.
(tree_expr_size): Likewise.
Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h statistics.h stmt.h varasm.h.
* genemit.c (main): Generate includes statistics.h, real.h, fixed-value.h,
insn-config.h, expmed.h, dojump.h, explow.h, emit-rtl.h, stmt.h.
* genopinit.c (main): Generate includes hashtab.h, hard-reg-set.h, function.h,
statistics.h, real.h, fixed-value.h, expmed.h, dojump.h, explow.h, emit-rtl.h,
stmt.h.
* genoutput.c (main): Generate includes hashtab.h, statistics.h, real.h,
fixed-value.h, expmed.h, dojump.h, explow.h, emit-rtl.h, stmt.h.
* genemit.c (open_base_files): Generate includes flags.h, statistics.h, real.h,
fixed-value.h, tree.h, expmed.h, dojump.h, explow.h, calls.h, emit-rtl.h, varasm.h,
stmt.h.
* config/tilepro/gen-mul-tables.cc: Generate includes hashtab.h, hash-set.h, vec.h,
machmode.h, tm.h, hard-reg-set.h, input.h, function.h, rtl.h, flags.h, statistics.h,
double-int.h, real.h, fixed-value.h, alias.h, wide-int.h, inchash.h, tree.h,
insn-config.h, expmed.h, dojump.h, explow.h, calls.h, emit-rtl.h, varasm.h, stmt.h.
* config/tilegx/mul-tables.c: Include alias.h calls.h dojump.h
double-int.h emit-rtl.h explow.h expmed.h fixed-value.h flags.h
function.h hard-reg-set.h hash-set.h hashtab.h inchash.h input.h
insn-config.h machmode.h real.h rtl.h statistics.h stmt.h symtab.h
tm.h tree.h varasm.h vec.h wide-int.h.
* rtlhooks.c: Include alias.h calls.h dojump.h double-int.h emit-rtl.h
explow.h expmed.h fixed-value.h flags.h function.h hard-reg-set.h
hash-set.h hashtab.h inchash.h input.h insn-config.h machmode.h
real.h statistics.h stmt.h tree.h varasm.h vec.h wide-int.h.
* cfgloopanal.c: Include alias.h calls.h dojump.h double-int.h emit-rtl.h
explow.h expmed.h fixed-value.h flags.h inchash.h insn-config.h
real.h statistics.h stmt.h tree.h varasm.h wide-int.h.
* loop-iv.c: Likewise.
* lra-assigns.c: Include alias.h calls.h dojump.h double-int.h emit-rtl.h
explow.h expmed.h fixed-value.h flags.h inchash.h real.h
statistics.h stmt.h tree.h varasm.h wide-int.h.
* lra-constraints.c: Likewise.
* lra-eliminations.c: Likewise.
* lra-lives.c: Likewise.
* lra-remat.c: Likewise.
* bt-load.c: Include alias.h calls.h dojump.h double-int.h emit-rtl.h
explow.h expmed.h fixed-value.h inchash.h insn-config.h real.h
statistics.h stmt.h tree.h varasm.h wide-int.h.
* hw-doloop.c: Likewise.
* ira-color.c: Likewise.
* ira-emit.c: Likewise.
* loop-doloop.c: Likewise.
* loop-invariant.c: Likewise.
* reload.c: Include alias.h calls.h dojump.h double-int.h emit-rtl.h
explow.h expmed.h fixed-value.h inchash.h real.h rtl.h
statistics.h stmt.h tree.h varasm.h wide-int.h.
* caller-save.c: Include alias.h calls.h dojump.h double-int.h emit-rtl.h
explow.h expmed.h fixed-value.h inchash.h real.h statistics.h
stmt.h tree.h varasm.h wide-int.h.
* combine-stack-adj.c: Likewise.
* cse.c: Likewise.
* ddg.c: Likewise.
* ifcvt.c: Likewise.
* ira-costs.c: Likewise.
* jump.c: Likewise.
* lra-coalesce.c: Likewise.
* lra-spills.c: Likewise.
* profile.c: Include alias.h calls.h dojump.h double-int.h emit-rtl.h
explow.h expmed.h fixed-value.h insn-config.h real.h statistics.h
stmt.h varasm.h wide-int.h.
* lra.c: Include alias.h calls.h dojump.h double-int.h emit-rtl.h
explow.h expmed.h fixed-value.h real.h statistics.h stmt.h
varasm.h.
* config/sh/sh_treg_combine.cc: Include alias.h calls.h dojump.h
double-int.h explow.h expmed.h fixed-value.h flags.h real.h
statistics.h stmt.h varasm.h wide-int.h.
* reorg.c: Include alias.h calls.h dojump.h double-int.h explow.h
expmed.h fixed-value.h inchash.h real.h statistics.h stmt.h tree.h
varasm.h wide-int.h.
* reload1.c: Include alias.h calls.h dojump.h double-int.h explow.h
expmed.h fixed-value.h real.h rtl.h statistics.h stmt.h varasm.h.
* config/tilegx/tilegx.c: Include alias.h dojump.h double-int.h
emit-rtl.h explow.h expmed.h fixed-value.h flags.h real.h
statistics.h stmt.h.
* config/tilepro/tilepro.c: Likewise.
* config/mmix/mmix.c: Include alias.h dojump.h double-int.h emit-rtl.h
explow.h expmed.h fixed-value.h real.h statistics.h stmt.h.
* config/pdp11/pdp11.c: Likewise.
* config/xtensa/xtensa.c: Likewise.
* config/lm32/lm32.c: Include alias.h dojump.h double-int.h emit-rtl.h
explow.h expmed.h fixed-value.h real.h statistics.h stmt.h
varasm.h.
* tree-chkp.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h flags.h function.h hard-reg-set.h hashtab.h
insn-config.h real.h rtl.h statistics.h stmt.h tm.h.
* cilk-common.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h flags.h function.h hard-reg-set.h hashtab.h
insn-config.h real.h rtl.h statistics.h stmt.h tm.h varasm.h.
* rtl-chkp.c: Likewise.
* tree-chkp-opt.c: Likewise.
* config/arm/arm-builtins.c: Include calls.h dojump.h emit-rtl.h explow.h
expmed.h fixed-value.h flags.h function.h hard-reg-set.h hashtab.h
insn-config.h real.h statistics.h stmt.h varasm.h.
* ipa-icf.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h flags.h hashtab.h insn-config.h real.h rtl.h
statistics.h stmt.h.
* tree-vect-data-refs.c: Likewise.
* graphite-sese-to-poly.c: Include calls.h dojump.h emit-rtl.h explow.h
expmed.h fixed-value.h flags.h hashtab.h insn-config.h real.h
rtl.h statistics.h stmt.h varasm.h.
* internal-fn.c: Likewise.
* ipa-icf-gimple.c: Likewise.
* lto-section-out.c: Likewise.
* tree-data-ref.c: Likewise.
* tree-nested.c: Likewise.
* tree-outof-ssa.c: Likewise.
* tree-predcom.c: Likewise.
* tree-pretty-print.c: Likewise.
* tree-scalar-evolution.c: Likewise.
* tree-ssa-strlen.c: Likewise.
* tree-vect-loop.c: Likewise.
* tree-vect-patterns.c: Likewise.
* tree-vect-slp.c: Likewise.
* tree-vect-stmts.c: Likewise.
* tsan.c: Likewise.
* targhooks.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h flags.h hashtab.h insn-config.h real.h statistics.h
stmt.h.
* config/sh/sh-mem.cc: Include calls.h dojump.h emit-rtl.h explow.h
expmed.h fixed-value.h flags.h hashtab.h insn-config.h real.h
statistics.h stmt.h varasm.h.
* loop-unroll.c: Likewise.
* ubsan.c: Likewise.
* tree-ssa-loop-prefetch.c: Include calls.h dojump.h emit-rtl.h explow.h
expmed.h fixed-value.h flags.h hashtab.h real.h rtl.h statistics.h
stmt.h varasm.h.
* dse.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h function.h hashtab.h statistics.h stmt.h varasm.h.
* tree-switch-conversion.c: Include calls.h dojump.h emit-rtl.h explow.h
expmed.h fixed-value.h hashtab.h insn-config.h real.h rtl.h
statistics.h stmt.h.
* generic-match-head.c: Include calls.h dojump.h emit-rtl.h explow.h
expmed.h fixed-value.h hashtab.h insn-config.h real.h rtl.h
statistics.h stmt.h varasm.h.
* gimple-match-head.c: Likewise.
* lto-cgraph.c: Likewise.
* lto-section-in.c: Likewise.
* lto-streamer-in.c: Likewise.
* lto-streamer-out.c: Likewise.
* tree-affine.c: Likewise.
* tree-cfg.c: Likewise.
* tree-cfgcleanup.c: Likewise.
* tree-if-conv.c: Likewise.
* tree-into-ssa.c: Likewise.
* tree-ssa-alias.c: Likewise.
* tree-ssa-copyrename.c: Likewise.
* tree-ssa-dse.c: Likewise.
* tree-ssa-forwprop.c: Likewise.
* tree-ssa-live.c: Likewise.
* tree-ssa-math-opts.c: Likewise.
* tree-ssa-pre.c: Likewise.
* tree-ssa-sccvn.c: Likewise.
* tree-tailcall.c: Likewise.
* tree-vect-generic.c: Likewise.
* tree-sra.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h insn-config.h real.h rtl.h stmt.h varasm.h.
* stor-layout.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h insn-config.h real.h statistics.h stmt.h.
* varasm.c: Likewise.
* coverage.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h insn-config.h real.h statistics.h stmt.h
varasm.h.
* init-regs.c: Likewise.
* ira.c: Likewise.
* omp-low.c: Likewise.
* stack-ptr-mod.c: Likewise.
* tree-ssa-reassoc.c: Likewise.
* tree-complex.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h insn-config.h rtl.h statistics.h stmt.h
varasm.h.
* dwarf2cfi.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h insn-config.h statistics.h stmt.h varasm.h.
* shrink-wrap.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h real.h rtl.h statistics.h stmt.h.
* recog.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h real.h rtl.h statistics.h stmt.h varasm.h.
* tree-ssa-phiopt.c: Likewise.
* config/darwin.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h real.h statistics.h stmt.h.
* config/fr30/fr30.c: Likewise.
* config/frv/frv.c: Likewise.
* expr.c: Likewise.
* final.c: Likewise.
* optabs.c: Likewise.
* passes.c: Likewise.
* simplify-rtx.c: Likewise.
* stmt.c: Likewise.
* toplev.c: Likewise.
* var-tracking.c: Likewise.
* gcse.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h real.h statistics.h stmt.h varasm.h.
* lower-subreg.c: Likewise.
* postreload-gcse.c: Likewise.
* ree.c: Likewise.
* reginfo.c: Likewise.
* store-motion.c: Likewise.
* combine.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h real.h stmt.h varasm.h.
* emit-rtl.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h statistics.h stmt.h.
* dojump.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h statistics.h stmt.h varasm.h.
* except.c: Likewise.
* explow.c: Likewise.
* tree-dfa.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h insn-config.h real.h rtl.h statistics.h stmt.h
varasm.h.
* gimple-fold.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h insn-config.h real.h rtl.h statistics.h varasm.h.
* tree-ssa-structalias.c: Likewise.
* cfgexpand.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h insn-config.h real.h statistics.h.
* calls.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h insn-config.h real.h statistics.h stmt.h.
* bb-reorder.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h insn-config.h real.h statistics.h stmt.h varasm.h.
* cfgbuild.c: Likewise.
* function.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h real.h rtl.h statistics.h stmt.h.
* cfgrtl.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h real.h rtl.h statistics.h stmt.h varasm.h.
* dbxout.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h real.h statistics.h stmt.h.
* auto-inc-dec.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h real.h statistics.h stmt.h varasm.h.
* cprop.c: Likewise.
* modulo-sched.c: Likewise.
* postreload.c: Likewise.
* ccmp.c: Include calls.h dojump.h emit-rtl.h explow.h fixed-value.h
flags.h function.h hard-reg-set.h hashtab.h insn-config.h real.h
statistics.h stmt.h varasm.h.
* gimple-ssa-strength-reduction.c: Include calls.h dojump.h emit-rtl.h
explow.h fixed-value.h flags.h hashtab.h insn-config.h real.h
rtl.h statistics.h stmt.h varasm.h.
* tree-ssa-loop-ivopts.c: Include calls.h dojump.h emit-rtl.h explow.h
fixed-value.h flags.h hashtab.h real.h rtl.h statistics.h stmt.h
varasm.h.
* expmed.c: Include calls.h dojump.h emit-rtl.h explow.h fixed-value.h
function.h hard-reg-set.h hashtab.h real.h statistics.h stmt.h
varasm.h.
* target-globals.c: Include calls.h dojump.h emit-rtl.h explow.h
fixed-value.h function.h hashtab.h real.h statistics.h stmt.h
varasm.h.
* tree-ssa-address.c: Include calls.h dojump.h emit-rtl.h explow.h
fixed-value.h hashtab.h real.h statistics.h stmt.h varasm.h.
* cfgcleanup.c: Include calls.h dojump.h explow.h expmed.h fixed-value.h
function.h real.h statistics.h stmt.h varasm.h.
* alias.c: Include calls.h dojump.h explow.h expmed.h fixed-value.h
insn-config.h real.h statistics.h stmt.h.
* dwarf2out.c: Include calls.h dojump.h explow.h expmed.h fixed-value.h
statistics.h stmt.h.
* config/nvptx/nvptx.c: Include dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h flags.h hard-reg-set.h insn-config.h real.h
statistics.h stmt.h varasm.h.
* gimplify.c: Include dojump.h emit-rtl.h explow.h expmed.h fixed-value.h
flags.h hashtab.h insn-config.h real.h rtl.h statistics.h.
* asan.c: Include dojump.h emit-rtl.h explow.h expmed.h fixed-value.h
flags.h hashtab.h insn-config.h real.h rtl.h statistics.h stmt.h.
* ipa-devirt.c: Include dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h flags.h hashtab.h insn-config.h real.h rtl.h
statistics.h stmt.h varasm.h.
* ipa-polymorphic-call.c: Likewise.
* config/aarch64/aarch64.c: Include dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h flags.h hashtab.h insn-config.h real.h statistics.h
stmt.h.
* config/c6x/c6x.c: Likewise.
* config/aarch64/aarch64-builtins.c: Include dojump.h emit-rtl.h explow.h
expmed.h fixed-value.h flags.h hashtab.h insn-config.h real.h
statistics.h stmt.h varasm.h.
* ipa-prop.c: Include dojump.h emit-rtl.h explow.h expmed.h fixed-value.h
hashtab.h insn-config.h real.h rtl.h statistics.h stmt.h varasm.h.
* ipa-split.c: Likewise.
* tree-eh.c: Likewise.
* tree-ssa-dce.c: Likewise.
* tree-ssa-loop-niter.c: Likewise.
* tree-vrp.c: Likewise.
* config/nds32/nds32-cost.c: Include dojump.h emit-rtl.h explow.h
expmed.h fixed-value.h hashtab.h insn-config.h real.h statistics.h
stmt.h.
* config/nds32/nds32-fp-as-gp.c: Likewise.
* config/nds32/nds32-intrinsic.c: Likewise.
* config/nds32/nds32-isr.c: Likewise.
* config/nds32/nds32-md-auxiliary.c: Likewise.
* config/nds32/nds32-memory-manipulation.c: Likewise.
* config/nds32/nds32-pipelines-auxiliary.c: Likewise.
* config/nds32/nds32-predicates.c: Likewise.
* config/nds32/nds32.c: Likewise.
* config/cris/cris.c: Include dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h real.h statistics.h.
* config/alpha/alpha.c: Include dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h real.h statistics.h stmt.h.
* config/arm/arm.c: Likewise.
* config/avr/avr.c: Likewise.
* config/bfin/bfin.c: Likewise.
* config/h8300/h8300.c: Likewise.
* config/i386/i386.c: Likewise.
* config/ia64/ia64.c: Likewise.
* config/iq2000/iq2000.c: Likewise.
* config/m32c/m32c.c: Likewise.
* config/m32r/m32r.c: Likewise.
* config/m68k/m68k.c: Likewise.
* config/mcore/mcore.c: Likewise.
* config/mep/mep.c: Likewise.
* config/mips/mips.c: Likewise.
* config/mn10300/mn10300.c: Likewise.
* config/moxie/moxie.c: Likewise.
* config/pa/pa.c: Likewise.
* config/rl78/rl78.c: Likewise.
* config/rx/rx.c: Likewise.
* config/s390/s390.c: Likewise.
* config/sh/sh.c: Likewise.
* config/sparc/sparc.c: Likewise.
* config/spu/spu.c: Likewise.
* config/stormy16/stormy16.c: Likewise.
* config/v850/v850.c: Likewise.
* config/vax/vax.c: Likewise.
* config/cr16/cr16.c: Include dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h hashtab.h real.h statistics.h stmt.h varasm.h.
* config/msp430/msp430.c: Likewise.
* predict.c: Likewise.
* value-prof.c: Likewise.
* config/epiphany/epiphany.c: Include dojump.h emit-rtl.h explow.h
expmed.h fixed-value.h hashtab.h statistics.h stmt.h.
* config/microblaze/microblaze.c: Likewise.
* config/nios2/nios2.c: Likewise.
* config/rs6000/rs6000.c: Likewise.
* tree.c: Include dojump.h emit-rtl.h explow.h expmed.h fixed-value.h
insn-config.h real.h rtl.h statistics.h stmt.h.
* cgraph.c: Include dojump.h emit-rtl.h explow.h expmed.h fixed-value.h
insn-config.h real.h statistics.h stmt.h.
* fold-const.c: Include dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h insn-config.h real.h statistics.h stmt.h varasm.h.
* tree-inline.c: Include dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h real.h rtl.h statistics.h stmt.h varasm.h.
* builtins.c: Include dojump.h emit-rtl.h explow.h expmed.h fixed-value.h
real.h statistics.h stmt.h.
* config/arc/arc.c: Include dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h statistics.h stmt.h.
* config/visium/visium.c: Include dojump.h emit-rtl.h explow.h expmed.h
stmt.h.
java/
* builtins.c: Include calls.h dojump.h emit-rtl.h explow.h expmed.h
fixed-value.h function.h hard-reg-set.h hashtab.h insn-config.h
real.h statistics.h stmt.h varasm.h.
From-SVN: r219655
2015-01-15 14:28:42 +01:00
|
|
|
/* Return a memory reference like MEMREF, but with its mode changed
|
|
|
|
to MODE and its address changed to ADDR.
|
|
|
|
(VOIDmode means don't change the mode.
|
|
|
|
NULL for ADDR means don't change the address.) */
|
|
|
|
extern rtx change_address (rtx, machine_mode, rtx);
|
|
|
|
|
|
|
|
/* Return a memory reference like MEMREF, but with its mode changed
|
|
|
|
to MODE and its address offset by OFFSET bytes. */
|
|
|
|
#define adjust_address(MEMREF, MODE, OFFSET) \
|
|
|
|
adjust_address_1 (MEMREF, MODE, OFFSET, 1, 1, 0, 0)
|
|
|
|
|
|
|
|
/* Likewise, but the reference is not required to be valid. */
|
|
|
|
#define adjust_address_nv(MEMREF, MODE, OFFSET) \
|
|
|
|
adjust_address_1 (MEMREF, MODE, OFFSET, 0, 1, 0, 0)
|
|
|
|
|
|
|
|
/* Return a memory reference like MEMREF, but with its mode changed
|
|
|
|
to MODE and its address offset by OFFSET bytes. Assume that it's
|
|
|
|
for a bitfield and conservatively drop the underlying object if we
|
|
|
|
cannot be sure to stay within its bounds. */
|
|
|
|
#define adjust_bitfield_address(MEMREF, MODE, OFFSET) \
|
|
|
|
adjust_address_1 (MEMREF, MODE, OFFSET, 1, 1, 1, 0)
|
|
|
|
|
|
|
|
/* As for adjust_bitfield_address, but specify that the width of
|
|
|
|
BLKmode accesses is SIZE bytes. */
|
|
|
|
#define adjust_bitfield_address_size(MEMREF, MODE, OFFSET, SIZE) \
|
|
|
|
adjust_address_1 (MEMREF, MODE, OFFSET, 1, 1, 1, SIZE)
|
|
|
|
|
|
|
|
/* Likewise, but the reference is not required to be valid. */
|
|
|
|
#define adjust_bitfield_address_nv(MEMREF, MODE, OFFSET) \
|
|
|
|
adjust_address_1 (MEMREF, MODE, OFFSET, 0, 1, 1, 0)
|
|
|
|
|
|
|
|
/* Return a memory reference like MEMREF, but with its mode changed
|
|
|
|
to MODE and its address changed to ADDR, which is assumed to be
|
|
|
|
increased by OFFSET bytes from MEMREF. */
|
|
|
|
#define adjust_automodify_address(MEMREF, MODE, ADDR, OFFSET) \
|
|
|
|
adjust_automodify_address_1 (MEMREF, MODE, ADDR, OFFSET, 1)
|
|
|
|
|
|
|
|
/* Likewise, but the reference is not required to be valid. */
|
|
|
|
#define adjust_automodify_address_nv(MEMREF, MODE, ADDR, OFFSET) \
|
|
|
|
adjust_automodify_address_1 (MEMREF, MODE, ADDR, OFFSET, 0)
|
|
|
|
|
|
|
|
extern rtx adjust_address_1 (rtx, machine_mode, HOST_WIDE_INT, int, int,
|
|
|
|
int, HOST_WIDE_INT);
|
|
|
|
extern rtx adjust_automodify_address_1 (rtx, machine_mode, rtx,
|
|
|
|
HOST_WIDE_INT, int);
|
|
|
|
|
|
|
|
/* Return a memory reference like MEMREF, but whose address is changed by
|
|
|
|
adding OFFSET, an RTX, to it. POW2 is the highest power of two factor
|
|
|
|
known to be in OFFSET (possibly 1). */
|
|
|
|
extern rtx offset_address (rtx, rtx, unsigned HOST_WIDE_INT);
|
|
|
|
|
|
|
|
/* Given REF, a MEM, and T, either the type of X or the expression
|
|
|
|
corresponding to REF, set the memory attributes. OBJECTP is nonzero
|
|
|
|
if we are making a new object of this type. */
|
|
|
|
extern void set_mem_attributes (rtx, tree, int);
|
|
|
|
|
|
|
|
/* Similar, except that BITPOS has not yet been applied to REF, so if
|
|
|
|
we alter MEM_OFFSET according to T then we should subtract BITPOS
|
|
|
|
expecting that it'll be added back in later. */
|
|
|
|
extern void set_mem_attributes_minus_bitpos (rtx, tree, int, HOST_WIDE_INT);
|
|
|
|
|
|
|
|
/* Return OFFSET if XEXP (MEM, 0) - OFFSET is known to be ALIGN
|
|
|
|
bits aligned for 0 <= OFFSET < ALIGN / BITS_PER_UNIT, or
|
|
|
|
-1 if not known. */
|
|
|
|
extern int get_mem_align_offset (rtx, unsigned int);
|
|
|
|
|
|
|
|
/* Return a memory reference like MEMREF, but with its mode widened to
|
|
|
|
MODE and adjusted by OFFSET. */
|
|
|
|
extern rtx widen_memory_access (rtx, machine_mode, HOST_WIDE_INT);
|
|
|
|
|
Introduce RTL function reader
This is the combination of these patches:
- [8a/9] Introduce class function_reader (v8)
- Add ASSERT_RTX_PTR_EQ
- [8b/9] Add target-independent selftests of RTL function reader (v2)
- [8c/9] Add aarch64-specific selftests for RTL function reader (v2)
- [8d/9] Add x86_64-specific selftests for RTL function reader (v2)
gcc/ChangeLog:
* Makefile.in (OBJS): Add read-md.o, read-rtl.o,
read-rtl-function.o, and selftest-rtl.o.
* config/aarch64/aarch64.c: Include selftest.h and
selftest-rtl.h.
(selftest::aarch64_test_loading_full_dump): New function.
(selftest::aarch64_run_selftests): New function.
(TARGET_RUN_TARGET_SELFTESTS): Wire it up to
selftest::aarch64_run_selftests.
* config/i386/i386.c
(selftest::ix86_test_loading_dump_fragment_1): New function.
(selftest::ix86_test_loading_call_insn): New function.
(selftest::ix86_test_loading_full_dump): New function.
(selftest::ix86_test_loading_unspec): New function.
(selftest::ix86_run_selftests): Call the new functions.
* emit-rtl.c (maybe_set_max_label_num): New function.
* emit-rtl.h (maybe_set_max_label_num): New decl.
* function.c (instantiate_decls): Guard call to
instantiate_decls_1 with if (DECL_INITIAL (fndecl)).
* function-tests.c (selftest::verify_three_block_rtl_cfg): Remove
"static".
* gensupport.c (gen_reader::gen_reader): Pass "false"
for new "compact" param of rtx_reader.
* print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)"
rather than an empty string for NULL strings.
* read-md.c: Potentially include config.h rather than bconfig.h.
Wrap include of errors.h with #ifdef GENERATOR_FILE.
(have_error): New global, copied from errors.c.
(md_reader::read_name): Rename to...
(md_reader::read_name_1): ...this, adding "out_loc" param,
and converting "missing name or number" to returning false, rather
than failing.
(md_reader::read_name): Reimplement in terms of read_name_1.
(md_reader::read_name_or_nil): New function.
(md_reader::read_string): Handle "(nil)" by returning NULL.
(md_reader::md_reader): Add new param "compact".
(md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE.
(md_reader::read_file): New method.
* read-md.h (md_reader::md_reader): Add new param "compact".
(md_reader::read_file): New method.
(md_reader::is_compact): New accessor.
(md_reader::read_name): Convert return type from void to
file_location.
(md_reader::read_name_or_nil): New decl.
(md_reader::read_name_1): New decl.
(md_reader::m_compact): New field.
(noop_reader::noop_reader): Pass "false" for new "compact" param
of rtx_reader.
(rtx_reader::rtx_reader): Add new "compact" param.
(rtx_reader::read_rtx_operand): Make virtual and convert return
type from void to rtx.
(rtx_reader::read_until): New decl.
(rtx_reader::handle_any_trailing_information): New virtual
function.
(rtx_reader::postprocess): New virtual function.
(rtx_reader::finalize_string): New virtual function.
(rtx_reader::m_in_call_function_usage): New field.
(rtx_reader::m_reuse_rtx_by_id): New field.
* read-rtl-function.c: New file.
* selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function.
* selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro.
(selftest::verify_three_block_rtl_cfg): New decl.
* read-rtl-function.h: New file.
* read-rtl.c: Potentially include config.h rather than bconfig.h.
For host, include function.h, memmodel.h, and emit-rtl.h.
(one_time_initialization): New function.
(struct compact_insn_name): New struct.
(compact_insn_names): New array.
(find_code): Handle insn codes in compact dumps.
(apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE.
(bind_subst_iter_and_attr): Likewise.
(add_condition_to_string): Likewise.
(add_condition_to_rtx): Likewise.
(apply_attribute_uses): Likewise.
(add_current_iterators): Likewise.
(apply_iterators): Likewise.
(initialize_iterators): Guard usage of apply_subst_iterator with
#ifdef GENERATOR_FILE.
(read_conditions): Wrap with #ifdef GENERATOR_FILE.
(md_reader::read_mapping): Likewise.
(add_define_attr_for_define_subst): Likewise.
(add_define_subst_attr): Likewise.
(read_subst_mapping): Likewise.
(check_code_iterator): Likewise.
(rtx_reader::read_rtx): Likewise. Move one-time initialization
logic to...
(one_time_initialization): New function.
(rtx_reader::read_until): New method.
(read_flags): New function.
(parse_reg_note_name): New function.
(rtx_reader::read_rtx_code): Initialize "iterator" to NULL.
Handle reuse_rtx ids.
Wrap iterator lookup within #ifdef GENERATOR_FILE.
Add parsing support for RTL dumps, mirroring the special-cases in
print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID
values, and calling handle_any_trailing_information.
(rtx_reader::read_rtx_operand): Convert return type from void
to rtx, returning return_rtx. Handle case 'e'. Call
finalize_string on XSTR and XTMPL fields.
(rtx_reader::read_nested_rtx): Handle dumps in which trailing
"(nil)" values were omitted. Call the postprocess vfunc on the
return_rtx.
(rtx_reader::rtx_reader): Add new "compact" param and pass to base
class ctor. Initialize m_in_call_function_usage. Call
one_time_initialization.
* rtl-tests.c (selftest::test_uncond_jump): Call
set_new_first_and_last_insn.
* rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE.
* selftest-rtl.c: New file.
* selftest-rtl.h (class selftest::rtl_dump_test): New class.
(selftest::get_insn_by_uid): New decl.
* selftest-run-tests.c (selftest::run_tests): Call
read_rtl_function_c_tests.
* selftest.h (selftest::read_rtl_function_c_tests): New decl.
* tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function
dumps.
gcc/testsuite/ChangeLog:
* selftests/asr_div1.rtl: New file.
* selftests/aarch64: New subdirectory.
* selftests/aarch64/times-two.rtl: New file.
* selftests/bb-index.rtl: New file.
* selftests/cfg-test.rtl: New file.
* selftests/const-int.rtl: New file.
* selftests/example-labels.rtl: New file.
* selftests/insn-with-mode.rtl: New file.
* selftests/jump-to-label-ref.rtl: New file.
* selftests/jump-to-return.rtl: New file.
* selftests/jump-to-simple-return.rtl: New file.
* selftests/mem.rtl: New file.
* selftests/note-insn-deleted.rtl: New file.
* selftests/note_insn_basic_block.rtl: New file.
* selftests/simple-cse.rtl: New file.
* selftests/symbol-ref.rtl: New file.
* selftests/x86_64: New subdirectory.
* selftests/x86_64/call-insn.rtl: New file.
* selftests/x86_64/copy-hard-reg-into-frame.rtl: New file.
* selftests/x86_64/times-two.rtl: New file.
* selftests/x86_64/unspec.rtl: New file.
From-SVN: r244110
2017-01-05 20:32:09 +01:00
|
|
|
extern void maybe_set_max_label_num (rtx_code_label *x);
|
|
|
|
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
#endif /* GCC_EMIT_RTL_H */
|