From 474bbda1675d35ab6f78ffdf20ee091f8402d185 Mon Sep 17 00:00:00 2001 From: James Greenhalgh Date: Fri, 2 Dec 2016 14:29:35 +0000 Subject: [PATCH] [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 --- gcc/ChangeLog | 15 +++++++++++++++ gcc/config/rs6000/rs6000.c | 23 +++++++++++++---------- gcc/output.h | 7 +++++-- gcc/varasm.c | 2 +- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 85b4bdb0ae0..734868404df 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2016-12-02 James Greenhalgh + + 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 * match.pd: Add new pattern: diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index e5726209297..425a885e75b 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 0924499c484..7186dc1b98b 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 1e7c2b523c1..f8af0c1a693 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; } -- 2.30.2