Commit 62902f3f by Richard Guenther Committed by Richard Biener

re PR lto/47641 (gcc.dg/lto/20101009-1 c_lto_20101009-1_0.o-c_lto_20101009-1_0.o link ICE)

2011-02-08  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/47641
	* tree-ssa.c (execute_update_addresses_taken): For asm outputs
	require type compatibility.

From-SVN: r169925
parent 0efb9d64
2011-02-08 Richard Guenther <rguenther@suse.de>
PR tree-optimization/47641
* tree-ssa.c (execute_update_addresses_taken): For asm outputs
require type compatibility.
2011-02-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> 2011-02-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gimple-low.c (lower_function_body): Don't remove the location of * gimple-low.c (lower_function_body): Don't remove the location of
......
...@@ -1898,7 +1898,7 @@ non_rewritable_lvalue_p (tree lhs) ...@@ -1898,7 +1898,7 @@ non_rewritable_lvalue_p (tree lhs)
/* A decl that is wrapped inside a MEM-REF that covers /* A decl that is wrapped inside a MEM-REF that covers
it full is also rewritable. it full is also rewritable.
??? The following could be relaxed allowing component ??? The following could be relaxed allowing component
references that do not change the access size. */ ; references that do not change the access size. */
if (TREE_CODE (lhs) == MEM_REF if (TREE_CODE (lhs) == MEM_REF
&& TREE_CODE (TREE_OPERAND (lhs, 0)) == ADDR_EXPR && TREE_CODE (TREE_OPERAND (lhs, 0)) == ADDR_EXPR
&& integer_zerop (TREE_OPERAND (lhs, 1))) && integer_zerop (TREE_OPERAND (lhs, 1)))
...@@ -2039,11 +2039,16 @@ execute_update_addresses_taken (void) ...@@ -2039,11 +2039,16 @@ execute_update_addresses_taken (void)
{ {
tree link = gimple_asm_output_op (stmt, i); tree link = gimple_asm_output_op (stmt, i);
tree lhs = TREE_VALUE (link); tree lhs = TREE_VALUE (link);
if (TREE_CODE (lhs) != SSA_NAME if (TREE_CODE (lhs) != SSA_NAME)
&& non_rewritable_lvalue_p (lhs))
{ {
decl = get_base_address (lhs); decl = get_base_address (lhs);
if (DECL_P (decl)) if (DECL_P (decl)
&& (non_rewritable_lvalue_p (lhs)
/* We cannot move required conversions from
the lhs to the rhs in asm statements, so
require we do not need any. */
|| !useless_type_conversion_p
(TREE_TYPE (lhs), TREE_TYPE (decl))))
bitmap_set_bit (not_reg_needs, DECL_UID (decl)); bitmap_set_bit (not_reg_needs, DECL_UID (decl));
} }
} }
......
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