This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[committed] TILE-Gx: fix pic code generation issue.
- From: Walter Lee <walt at tilera dot com>
- To: <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 25 Jan 2014 15:49:21 -0500
- Subject: [committed] TILE-Gx: fix pic code generation issue.
- Authentication-results: sourceware.org; auth=none
- Reply-to: Walter Lee <walt at tilera dot com>
This patch fixes a pic code generation issue on tilegx. We use
crtl->uses_pic_offset_table to decide whether the pic registers are
used in the function. This value is updated in tile-specific code
generation routines. However, these routines may be called by the
loop optimizer to get the cost of computing an address. So we reset
this value immediately before we begin actual code generation.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index baf3bd6..9306621 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-25 Walter Lee <walt@tilera.com>
+
+ * config/tilegx/tilegx.c (tilegx_expand_to_rtl_hook): New.
+ (TARGET_EXPAND_TO_RTL_HOOK): Define.
+
2014-01-24 James Greenhalgh <james.greenhalgh@arm.com>
* common/config/aarch64/aarch64-common.c
diff --git a/gcc/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c
index 654f836..85a46f7 100644
--- a/gcc/config/tilegx/tilegx.c
+++ b/gcc/config/tilegx/tilegx.c
@@ -719,6 +719,16 @@ tilegx_init_expanders (void)
}
+/* Implement TARGET_EXPAND_TO_RTL_HOOK. */
+static void
+tilegx_expand_to_rtl_hook (void)
+{
+ /* Exclude earlier sets of crtl->uses_pic_offset_table, because we
+ only care about uses actually emitted. */
+ crtl->uses_pic_offset_table = 0;
+}
+
+
/* Implement TARGET_SHIFT_TRUNCATION_MASK. DImode shifts use the mode
matching insns and therefore guarantee that the shift count is
modulo 64. SImode shifts sometimes use the 64 bit version so do
@@ -5515,6 +5525,9 @@ tilegx_file_end (void)
#undef TARGET_RTX_COSTS
#define TARGET_RTX_COSTS tilegx_rtx_costs
+#undef TARGET_EXPAND_TO_RTL_HOOK
+#define TARGET_EXPAND_TO_RTL_HOOK tilegx_expand_to_rtl_hook
+
#undef TARGET_SHIFT_TRUNCATION_MASK
#define TARGET_SHIFT_TRUNCATION_MASK tilegx_shift_truncation_mask