Commit c4ea5200 by Martin Jambor Committed by Martin Jambor

re PR middle-end/42006 (Termination problem with -O2 and -O3)

2009-11-27  Martin Jambor  <mjambor@suse.cz>

	PR middle-end/42006
	* tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
	instead of create_tmp_var.  Set DECL_GIMPLE_REG_P to one manually
	for vector and complex types.
	(get_adjustment_for_base): Describe return value in the comment.

	* testsuite/gcc.c-torture/execute/pr42006.c: New test.

From-SVN: r154715
parent ba964383
2009-11-27 Martin Jambor <mjambor@suse.cz>
PR middle-end/42006
* tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
instead of create_tmp_var. Set DECL_GIMPLE_REG_P to one manually
for vector and complex types.
(get_adjustment_for_base): Describe return value in the comment.
2009-11-27 Nick Clifton <nickc@redhat.com>
* longlong.h (count_leading_zeros): Define macro for stormy16
2009-11-27 Martin Jambor <mjambor@suse.cz>
PR middle-end/42006
* gcc.c-torture/execute/pr42006.c: New test.
2009-11-27 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/38656
......
extern void abort (void);
static unsigned int
my_add(unsigned int si1, unsigned int si2)
{
return (si1 > (50-si2)) ? si1 : (si1 + si2);
}
static unsigned int
my_shift(unsigned int left, unsigned int right)
{
return (right > 100) ? left : (left >> right);
}
static int func_4(unsigned int p_6)
{
int count = 0;
for (p_6 = 1; p_6 < 3; p_6 = my_add(p_6, 1))
{
if (count++ > 1)
abort ();
if (my_shift(p_6, p_6))
return 0;
}
return 0;
}
int main(void)
{
func_4(0);
return 0;
}
......@@ -3478,7 +3478,10 @@ get_replaced_param_substitute (struct ipa_parm_adjustment *adj)
{
char *pretty_name = make_fancy_name (adj->base);
repl = make_rename_temp (TREE_TYPE (adj->base), "ISR");
repl = create_tmp_var (TREE_TYPE (adj->base), "ISR");
if (TREE_CODE (TREE_TYPE (repl)) == COMPLEX_TYPE
|| TREE_CODE (TREE_TYPE (repl)) == VECTOR_TYPE)
DECL_GIMPLE_REG_P (repl) = 1;
DECL_NAME (repl) = get_identifier (pretty_name);
obstack_free (&name_obstack, pretty_name);
......@@ -3516,7 +3519,8 @@ get_adjustment_for_base (ipa_parm_adjustment_vec adjustments, tree base)
/* Callback for scan_function. If the statement STMT defines an SSA_NAME of a
parameter which is to be removed because its value is not used, replace the
SSA_NAME with a one relating to a created VAR_DECL and replace all of its
uses too. DATA is a pointer to an adjustments vector. */
uses too and return true (update_stmt is then issued for the statement by
the caller). DATA is a pointer to an adjustments vector. */
static bool
replace_removed_params_ssa_names (gimple stmt, void *data)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment