re PR bootstrap/53021 (bootstrap failure on Linux/ia32)

PR bootstrap/53021
	* alias.h (UNIQUE_BASE_VALUE_SP, UNIQUE_BASE_VALUE_ARGP,
	UNIQUE_BASE_VALUE_FP, UNIQUE_BASE_VALUE_HFP): Define.
	* alias.c (init_alias_targets): Use UNIQUE_BASE_VALUE_*
	macros instead of constants.
	* dse.c (record_store): Check for SP ADDRESS by comparing
	XWINT to UNIQUE_BASE_VALUE_SP instead of expecting
	XEXP to be stack_pointer_rtx.

From-SVN: r186623
This commit is contained in:
Jakub Jelinek 2012-04-20 14:19:51 +02:00 committed by Jakub Jelinek
parent faaf273bb0
commit 757e8ba242
4 changed files with 31 additions and 8 deletions

View File

@ -1,3 +1,14 @@
2012-04-20 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/53021
* alias.h (UNIQUE_BASE_VALUE_SP, UNIQUE_BASE_VALUE_ARGP,
UNIQUE_BASE_VALUE_FP, UNIQUE_BASE_VALUE_HFP): Define.
* alias.c (init_alias_targets): Use UNIQUE_BASE_VALUE_*
macros instead of constants.
* dse.c (record_store): Check for SP ADDRESS by comparing
XWINT to UNIQUE_BASE_VALUE_SP instead of expecting
XEXP to be stack_pointer_rtx.
2012-04-20 Richard Guenther <rguenther@suse.de>
* tree-ssa-copy.c (propagate_tree_value_into_stmt): Use

View File

@ -1,6 +1,6 @@
/* Alias analysis for GNU C
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008, 2009, 2010 Free Software Foundation, Inc.
2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Contributed by John Carr (jfc@mit.edu).
This file is part of GCC.
@ -2734,11 +2734,15 @@ init_alias_target (void)
&& HARD_REGNO_MODE_OK (i, Pmode))
static_reg_base_value[i] = arg_base_value;
static_reg_base_value[STACK_POINTER_REGNUM] = unique_base_value (-1);
static_reg_base_value[ARG_POINTER_REGNUM] = unique_base_value (-2);
static_reg_base_value[FRAME_POINTER_REGNUM] = unique_base_value (-3);
static_reg_base_value[STACK_POINTER_REGNUM]
= unique_base_value (UNIQUE_BASE_VALUE_SP);
static_reg_base_value[ARG_POINTER_REGNUM]
= unique_base_value (UNIQUE_BASE_VALUE_ARGP);
static_reg_base_value[FRAME_POINTER_REGNUM]
= unique_base_value (UNIQUE_BASE_VALUE_FP);
#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
static_reg_base_value[HARD_FRAME_POINTER_REGNUM] = unique_base_value (-4);
static_reg_base_value[HARD_FRAME_POINTER_REGNUM]
= unique_base_value (UNIQUE_BASE_VALUE_HFP);
#endif
}

View File

@ -1,5 +1,6 @@
/* Exported functions from alias.c
Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Copyright (C) 2004, 2007, 2008, 2009, 2010, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@ -50,4 +51,11 @@ extern int nonoverlapping_memrefs_p (const_rtx, const_rtx, bool);
memory barriers, including an address of SCRATCH. */
#define ALIAS_SET_MEMORY_BARRIER ((alias_set_type) -1)
/* Values of XWINT (address, 0) of Pmode ADDRESS rtxes for special
registers. */
#define UNIQUE_BASE_VALUE_SP -1
#define UNIQUE_BASE_VALUE_ARGP -2
#define UNIQUE_BASE_VALUE_FP -3
#define UNIQUE_BASE_VALUE_HFP -4
#endif /* GCC_ALIAS_H */

View File

@ -1,5 +1,5 @@
/* RTL dead store elimination.
Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Contributed by Richard Sandiford <rsandifor@codesourcery.com>
@ -1503,7 +1503,7 @@ record_store (rtx body, bb_info_t bb_info)
if (!base_term
|| (GET_CODE (base_term) == ADDRESS
&& GET_MODE (base_term) == Pmode
&& XEXP (base_term, 0) == stack_pointer_rtx))
&& XWINT (base_term, 0) == UNIQUE_BASE_VALUE_SP))
insn_info->stack_pointer_based = true;
insn_info->contains_cselib_groups = true;