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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154715
138bc75d-0d04-0410-961f-
82ee72b054a4
+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
--- /dev/null
+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;
+}
{
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);
/* 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)