aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/calls.c2
-rw-r--r--gcc/cgraph.c5
-rw-r--r--gcc/cgraph.h18
-rw-r--r--gcc/ira.c2
-rw-r--r--gcc/rtl.h17
6 files changed, 36 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 157c23e..8280777 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2015-06-25 Andrew MacLeod <amacleod@redhat.com>
+
+ * cgraph.h (cgraph_rtl_info): Move to rtl.h
+ (cgraph_node): Maintain pointer to struct cgraph_rtl_info instead of
+ and instance.
+ * rtl.h (struct cgraph_rtl_info): Define when HARD_REG_SET available.
+ * cgraph.c (cgraph_node::rtl_info): Allocate cgraph_rtl_info if one
+ doesn't exist.
+ * calls.c: Include hard-reg-set.h before rtl.h.
+ * ira.c: Likewise.
+
2015-06-25 Zhouyi Zhou <yizhouzhou@ict.ac.cn>
Vladimir Makarov <vmakarov@redhat.com>
diff --git a/gcc/calls.c b/gcc/calls.c
index d632881..5cf0dca 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
#include "system.h"
#include "coretypes.h"
#include "tm.h"
+#include "hard-reg-set.h"
#include "rtl.h"
#include "alias.h"
#include "symtab.h"
@@ -31,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "stringpool.h"
#include "attribs.h"
#include "predict.h"
-#include "hard-reg-set.h"
#include "function.h"
#include "basic-block.h"
#include "tree-ssa-alias.h"
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index e530568..60f9006 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -1892,7 +1892,10 @@ cgraph_node::rtl_info (tree decl)
if (node->decl != current_function_decl
&& !TREE_ASM_WRITTEN (node->decl))
return NULL;
- return &node->ultimate_alias_target ()->rtl;
+ /* Allocate if it doesnt exist. */
+ if (node->ultimate_alias_target ()->rtl == NULL)
+ node->ultimate_alias_target ()->rtl = ggc_cleared_alloc<cgraph_rtl_info> ();
+ return node->ultimate_alias_target ()->rtl;
}
/* Return a string describing the failure REASON. */
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 55864a2..62d4ad6 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -613,20 +613,6 @@ struct GTY(()) cgraph_global_info {
cgraph_node *inlined_to;
};
-/* Information about the function that is propagated by the RTL backend.
- Available only for functions that has been already assembled. */
-
-struct GTY(()) cgraph_rtl_info {
- unsigned int preferred_incoming_stack_boundary;
-
- /* Call unsaved hard registers really used by the corresponding
- function (including ones used by functions called by the
- function). */
- HARD_REG_SET function_used_regs;
- /* Set if function_used_regs is valid. */
- unsigned function_used_regs_valid: 1;
-};
-
/* Represent which DECL tree (or reference to such tree)
will be replaced by another tree while versioning. */
struct GTY(()) ipa_replace_map
@@ -1194,7 +1180,7 @@ public:
static cgraph_local_info *local_info (tree decl);
/* Return local info for the compiled function. */
- static cgraph_rtl_info *rtl_info (tree);
+ static struct cgraph_rtl_info *rtl_info (tree);
/* Return the cgraph node that has ASMNAME for its DECL_ASSEMBLER_NAME.
Return NULL if there's no such node. */
@@ -1263,7 +1249,7 @@ public:
cgraph_local_info local;
cgraph_global_info global;
- cgraph_rtl_info rtl;
+ struct cgraph_rtl_info *rtl;
cgraph_clone_info clone;
cgraph_thunk_info thunk;
diff --git a/gcc/ira.c b/gcc/ira.c
index c95f57b..92d5eb1 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -371,13 +371,13 @@ along with GCC; see the file COPYING3. If not see
#include "alias.h"
#include "symtab.h"
#include "tree.h"
+#include "hard-reg-set.h"
#include "rtl.h"
#include "tm_p.h"
#include "target.h"
#include "flags.h"
#include "obstack.h"
#include "bitmap.h"
-#include "hard-reg-set.h"
#include "predict.h"
#include "function.h"
#include "dominance.h"
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 5b4a525..07c5f65 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -3710,4 +3710,21 @@ extern void _fatal_insn (const char *, const_rtx, const char *, int, const char
/* reginfo.c */
extern tree GTY(()) global_regs_decl[FIRST_PSEUDO_REGISTER];
+#ifdef HARD_CONST
+/* Information about the function that is propagated by the RTL backend.
+ Available only for functions that has been already assembled. */
+
+struct GTY(()) cgraph_rtl_info {
+ unsigned int preferred_incoming_stack_boundary;
+
+ /* Call unsaved hard registers really used by the corresponding
+ function (including ones used by functions called by the
+ function). */
+ HARD_REG_SET function_used_regs;
+ /* Set if function_used_regs is valid. */
+ unsigned function_used_regs_valid: 1;
+};
+#endif
+
+
#endif /* ! GCC_RTL_H */