+2015-06-25 Andrew MacLeod <amacleod@redhat.com>
+
+ * function.h (struct incoming_args): Move struct.
+ (pass_by_reference, reference_callee_copied): Remove prototypes.
+ * emit-rtl.h (struct incoming_args): Relocate struct here.
+ * calls.h (pass_by_reference, reference_callee_copied): Relocate
+ prototypes here.
+ * function.c (pass_by_reference, reference_callee_copied): Move.
+ * calls.c (pass_by_reference, reference_callee_copied): Relocate here.
+ * cfgloop.h: Don't include tm.h or hard-reg-set.h.
+ * ipa-chkp.c: Include calls.h.
+
2015-06-25 Andrew Macleod <amacleod@redhat.com>
* alias.h (alias_set_type): Move typedef.
+2015-06-25 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc-interface/misc.c: Include calls.h not function.h.
+
2015-06-19 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/gigi.h (record_builtin_type): Adjust comment.
#include "plugin.h"
#include "hashtab.h"
#include "hard-reg-set.h"
-#include "function.h" /* For pass_by_reference. */
+#include "calls.h" /* For pass_by_reference. */
#include "dwarf2out.h"
#include "ada.h"
+2015-06-25 Andrew MacLeod <amacleod@redhat.com>
+
+ * cilk.c: Move calls.h after tm.h in the include chain.
+
2015-06-25 Marek Polacek <polacek@redhat.com>
* array-notation-common.c: Use VAR_P throughout.
#include "tree.h"
#include "fold-const.h"
#include "stringpool.h"
-#include "calls.h"
#include "langhooks.h"
#include "gimple-expr.h"
#include "gimplify.h"
#include "tm.h"
#include "hard-reg-set.h"
#include "function.h"
+#include "calls.h"
#include "ipa-ref.h"
#include "cgraph.h"
#include "diagnostic.h"
return flags;
}
+/* Return true if TYPE should be passed by invisible reference. */
+
+bool
+pass_by_reference (CUMULATIVE_ARGS *ca, machine_mode mode,
+ tree type, bool named_arg)
+{
+ if (type)
+ {
+ /* If this type contains non-trivial constructors, then it is
+ forbidden for the middle-end to create any new copies. */
+ if (TREE_ADDRESSABLE (type))
+ return true;
+
+ /* GCC post 3.4 passes *all* variable sized types by reference. */
+ if (!TYPE_SIZE (type) || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
+ return true;
+
+ /* If a record type should be passed the same as its first (and only)
+ member, use the type and mode of that member. */
+ if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type))
+ {
+ type = TREE_TYPE (first_field (type));
+ mode = TYPE_MODE (type);
+ }
+ }
+
+ return targetm.calls.pass_by_reference (pack_cumulative_args (ca), mode,
+ type, named_arg);
+}
+
+/* Return true if TYPE, which is passed by reference, should be callee
+ copied instead of caller copied. */
+
+bool
+reference_callee_copied (CUMULATIVE_ARGS *ca, machine_mode mode,
+ tree type, bool named_arg)
+{
+ if (type && TREE_ADDRESSABLE (type))
+ return false;
+ return targetm.calls.callee_copies (pack_cumulative_args (ca), mode, type,
+ named_arg);
+}
+
+
/* Precompute all register parameters as described by ARGS, storing values
into fields within the ARGS array.
extern rtx expand_call (tree, rtx, int);
extern void fixup_tail_calls (void);
+extern bool pass_by_reference (CUMULATIVE_ARGS *, machine_mode,
+ tree, bool);
+extern bool reference_callee_copied (CUMULATIVE_ARGS *, machine_mode,
+ tree, bool);
+
#endif // GCC_CALLS_H
#include "bitmap.h"
#include "sbitmap.h"
-#include "tm.h"
-#include "hard-reg-set.h"
#include "function.h"
#include "cfgloopmanip.h"
struct temp_slot;
typedef struct temp_slot *temp_slot_p;
+/* 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;
+};
+
+
/* Datastructures maintained for currently processed function in RTL form. */
struct GTY(()) rtl_data {
struct expr_status expr;
return true;
}
-/* Return true if TYPE should be passed by invisible reference. */
-
-bool
-pass_by_reference (CUMULATIVE_ARGS *ca, machine_mode mode,
- tree type, bool named_arg)
-{
- if (type)
- {
- /* If this type contains non-trivial constructors, then it is
- forbidden for the middle-end to create any new copies. */
- if (TREE_ADDRESSABLE (type))
- return true;
-
- /* GCC post 3.4 passes *all* variable sized types by reference. */
- if (!TYPE_SIZE (type) || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
- return true;
-
- /* If a record type should be passed the same as its first (and only)
- member, use the type and mode of that member. */
- if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type))
- {
- type = TREE_TYPE (first_field (type));
- mode = TYPE_MODE (type);
- }
- }
-
- return targetm.calls.pass_by_reference (pack_cumulative_args (ca), mode,
- type, named_arg);
-}
-
-/* Return true if TYPE, which is passed by reference, should be callee
- copied instead of caller copied. */
-
-bool
-reference_callee_copied (CUMULATIVE_ARGS *ca, machine_mode mode,
- tree type, bool named_arg)
-{
- if (type && TREE_ADDRESSABLE (type))
- return false;
- return targetm.calls.callee_copies (pack_cumulative_args (ca), mode, type,
- named_arg);
-}
-
/* Structures to communicate between the subroutines of assign_parms.
The first holds data persistent across all parameters, the second
is cleared out for each parameter. */
unsigned int deferred_constants;
};
-/* 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;
-};
/* Data for function partitioning. */
struct GTY(()) function_subsections {
extern void instantiate_decl_rtl (rtx x);
extern int aggregate_value_p (const_tree, const_tree);
extern bool use_register_for_decl (const_tree);
-extern bool pass_by_reference (CUMULATIVE_ARGS *, machine_mode,
- tree, bool);
-extern bool reference_callee_copied (CUMULATIVE_ARGS *, machine_mode,
- tree, bool);
extern gimple_seq gimplify_parameters (void);
extern void locate_and_pad_parm (machine_mode, tree, int, int, int,
tree, struct args_size *,
#include "tm.h"
#include "hard-reg-set.h"
#include "function.h"
+#include "calls.h"
#include "tree-ssa-alias.h"
#include "predict.h"
#include "basic-block.h"