--- gcc/config/i386/i386.c.orig Wed May 12 17:51:23 1999 +++ gcc/config/i386/i386.c Wed May 12 17:54:30 1999 @@ -54,6 +54,11 @@ #define CHECK_STACK_LIMIT -1 #endif +#define PIC_REG_USED \ + (flag_pic && (current_function_uses_pic_offset_table \ + || current_function_uses_const_pool \ + || profile_flag || profile_block_flag)) + /* Type of an operand for ix86_{binary,unary}_operator_ok */ enum reg_mem { @@ -1987,13 +1992,11 @@ char *name ATTRIBUTE_UNUSED; { rtx xops[2]; - int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table - || current_function_uses_const_pool); xops[0] = pic_offset_table_rtx; xops[1] = stack_pointer_rtx; /* Deep branch prediction favors having a return for every call. */ - if (pic_reg_used && TARGET_DEEP_BRANCH_PREDICTION) + if (PIC_REG_USED && TARGET_DEEP_BRANCH_PREDICTION) { tree prologue_node; @@ -2123,8 +2126,7 @@ register int regno; int limit; rtx xops[4]; - int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table - || current_function_uses_const_pool); + int pic_reg_used = PIC_REG_USED; long tsize = ix86_frame_size (); rtx insn; int cfa_offset = INCOMING_FRAME_SP_OFFSET, cfa_store_offset = cfa_offset; @@ -2290,8 +2292,6 @@ int nregs = 0; int reglimit = (frame_pointer_needed ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM); - int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table - || current_function_uses_const_pool); #ifdef NON_SAVING_SETJMP if (NON_SAVING_SETJMP && current_function_calls_setjmp) @@ -2303,7 +2303,7 @@ for (regno = reglimit - 1; regno >= 0; regno--) if ((regs_ever_live[regno] && ! call_used_regs[regno]) - || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used)) + || (regno == PIC_OFFSET_TABLE_REGNUM && PIC_REG_USED)) nregs++; return nregs == 0 || ! frame_pointer_needed; @@ -2337,8 +2337,7 @@ register int nregs, limit; int offset; rtx xops[3]; - int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table - || current_function_uses_const_pool); + int pic_reg_used = PIC_REG_USED; long tsize = ix86_frame_size (); /* Compute the number of registers to pop */ @@ -5714,8 +5713,7 @@ { int regno; int offset = 0; - int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table - || current_function_uses_const_pool); + int pic_reg_used = PIC_REG_USED; int tsize = get_frame_size (); for (regno = 0; regno < STACK_POINTER_REGNUM; regno++) @@ -5741,8 +5739,7 @@ { int regno; int offset = 0; - int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table - || current_function_uses_const_pool); + int pic_reg_used = PIC_REG_USED; int limit = (frame_pointer_needed ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM); int tsize = get_frame_size ();