aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJames Greenhalgh <james.greenhalgh@arm.com>2016-12-02 14:29:35 +0000
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>2016-12-02 14:29:35 +0000
commit474bbda1675d35ab6f78ffdf20ee091f8402d185 (patch)
treef3bb68e8d44bcc7d943e1cb85b5614bb525bc1fa /gcc
parente7a7f4bea8356e24ca5f2c25a75dc005c7492f89 (diff)
downloadgcc-474bbda1675d35ab6f78ffdf20ee091f8402d185.zip
gcc-474bbda1675d35ab6f78ffdf20ee091f8402d185.tar.gz
gcc-474bbda1675d35ab6f78ffdf20ee091f8402d185.tar.bz2
[Patch 1/2 PR78561] Rename get_pool_size to get_pool_size_upper_bound
gcc/ PR rtl-optimization/78561 * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p) Rename get_pool_size to get_pool_size_upper_bound. (rs6000_stack_info): Likewise. (rs6000_emit_prologue): Likewise. (rs6000_elf_declare_function_name): Likewise. (rs6000_set_up_by_prologue): Likewise. (rs6000_can_eliminate): Likewise, reformat spaces to tabs. * output.h (get_pool_size): Rename to... (get_pool_size_upper_bound): ...This. * varasm.c (get_pool_size): Rename to... (get_pool_size_upper_bound): ...This. From-SVN: r243182
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog15
-rw-r--r--gcc/config/rs6000/rs6000.c23
-rw-r--r--gcc/output.h7
-rw-r--r--gcc/varasm.c2
4 files changed, 34 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 85b4bdb..7348684 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,18 @@
+2016-12-02 James Greenhalgh <james.greenhalgh@arm.com>
+
+ PR rtl-optimization/78561
+ * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p) Rename
+ get_pool_size to get_pool_size_upper_bound.
+ (rs6000_stack_info): Likewise.
+ (rs6000_emit_prologue): Likewise.
+ (rs6000_elf_declare_function_name): Likewise.
+ (rs6000_set_up_by_prologue): Likewise.
+ (rs6000_can_eliminate): Likewise, reformat spaces to tabs.
+ * output.h (get_pool_size): Rename to...
+ (get_pool_size_upper_bound): ...This.
+ * varasm.c (get_pool_size): Rename to...
+ (get_pool_size_upper_bound): ...This.
+
2016-12-02 Bin Cheng <bin.cheng@arm.com>
* match.pd: Add new pattern:
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index e572620..425a885 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -25460,7 +25460,7 @@ rs6000_reg_live_or_pic_offset_p (int reg)
if (TARGET_TOC && TARGET_MINIMAL_TOC
&& (crtl->calls_eh_return
|| df_regs_ever_live_p (reg)
- || get_pool_size ()))
+ || get_pool_size_upper_bound ()))
return true;
if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN)
@@ -26266,7 +26266,7 @@ rs6000_stack_info (void)
#ifdef TARGET_RELOCATABLE
|| (DEFAULT_ABI == ABI_V4
&& (TARGET_RELOCATABLE || flag_pic > 1)
- && get_pool_size () != 0)
+ && get_pool_size_upper_bound () != 0)
#endif
|| rs6000_ra_ever_killed ())
info->lr_save_p = 1;
@@ -28044,7 +28044,8 @@ rs6000_emit_prologue (void)
cfun->machine->r2_setup_needed = df_regs_ever_live_p (TOC_REGNUM);
/* With -mminimal-toc we may generate an extra use of r2 below. */
- if (TARGET_TOC && TARGET_MINIMAL_TOC && get_pool_size () != 0)
+ if (TARGET_TOC && TARGET_MINIMAL_TOC
+ && get_pool_size_upper_bound () != 0)
cfun->machine->r2_setup_needed = true;
}
@@ -28899,7 +28900,8 @@ rs6000_emit_prologue (void)
/* If we are using RS6000_PIC_OFFSET_TABLE_REGNUM, we need to set it up. */
if (!TARGET_SINGLE_PIC_BASE
- && ((TARGET_TOC && TARGET_MINIMAL_TOC && get_pool_size () != 0)
+ && ((TARGET_TOC && TARGET_MINIMAL_TOC
+ && get_pool_size_upper_bound () != 0)
|| (DEFAULT_ABI == ABI_V4
&& (flag_pic == 1 || (flag_pic && TARGET_SECURE_PLT))
&& df_regs_ever_live_p (RS6000_PIC_OFFSET_TABLE_REGNUM))))
@@ -34966,7 +34968,7 @@ rs6000_elf_declare_function_name (FILE *file, const char *name, tree decl)
if (DEFAULT_ABI == ABI_V4
&& (TARGET_RELOCATABLE || flag_pic > 1)
&& !TARGET_SECURE_PLT
- && (get_pool_size () != 0 || crtl->profile)
+ && (get_pool_size_upper_bound () != 0 || crtl->profile)
&& uses_TOC ())
{
char buf[256];
@@ -37449,10 +37451,11 @@ static bool
rs6000_can_eliminate (const int from, const int to)
{
return (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM
- ? ! frame_pointer_needed
- : from == RS6000_PIC_OFFSET_TABLE_REGNUM
- ? ! TARGET_MINIMAL_TOC || TARGET_NO_TOC || get_pool_size () == 0
- : true);
+ ? ! frame_pointer_needed
+ : from == RS6000_PIC_OFFSET_TABLE_REGNUM
+ ? ! TARGET_MINIMAL_TOC || TARGET_NO_TOC
+ || get_pool_size_upper_bound () == 0
+ : true);
}
/* Define the offset between two registers, FROM to be eliminated and its
@@ -38988,7 +38991,7 @@ rs6000_set_up_by_prologue (struct hard_reg_set_container *set)
if (!TARGET_SINGLE_PIC_BASE
&& TARGET_TOC
&& TARGET_MINIMAL_TOC
- && get_pool_size () != 0)
+ && get_pool_size_upper_bound () != 0)
add_to_hard_reg_set (&set->set, Pmode, RS6000_PIC_OFFSET_TABLE_REGNUM);
if (cfun->machine->split_stack_argp_used)
add_to_hard_reg_set (&set->set, Pmode, 12);
diff --git a/gcc/output.h b/gcc/output.h
index 0924499..7186dc1 100644
--- a/gcc/output.h
+++ b/gcc/output.h
@@ -287,8 +287,11 @@ extern void assemble_real (REAL_VALUE_TYPE, machine_mode, unsigned,
/* Write the address of the entity given by SYMBOL to SEC. */
extern void assemble_addr_to_section (rtx, section *);
-/* Return the size of the constant pool. */
-extern int get_pool_size (void);
+/* Return the maximum size of the constant pool. This may be larger
+ than the final size of the constant pool, as entries may be added to
+ the constant pool which become unreferenced, or otherwise not need
+ output by the time we actually emit the pool. */
+extern int get_pool_size_upper_bound (void);
extern rtx_insn *peephole (rtx_insn *);
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 1e7c2b5..f8af0c1 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -3811,7 +3811,7 @@ get_pool_mode (const_rtx addr)
/* Return the size of the constant pool. */
int
-get_pool_size (void)
+get_pool_size_upper_bound (void)
{
return crtl->varasm.pool->offset;
}