From: Richard Biener <rguenther@suse.de>
To: gcc-patches@gcc.gnu.org
Subject: [PATCH] Fix PR69053
Date: Tue, 12 Jan 2016 11:39:00 -0000 [thread overview]
Message-ID: <alpine.LSU.2.11.1601121238550.31122@t29.fhfr.qr> (raw)
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.
Richard.
2016-01-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/69053
* tree-vect-loop.c (get_initial_def_for_reduction): Properly
convert initial value for cond reductions.
* g++.dg/torture/pr69053.C: New testcase.
Index: gcc/tree-vect-loop.c
===================================================================
*** gcc/tree-vect-loop.c (revision 232261)
--- gcc/tree-vect-loop.c (working copy)
*************** get_initial_def_for_reduction (gimple *s
*** 4075,4084 ****
tree *elts;
int i;
bool nested_in_vect_loop = false;
- tree init_value;
REAL_VALUE_TYPE real_init_val = dconst0;
int int_init_val = 0;
gimple *def_stmt = NULL;
gcc_assert (vectype);
nunits = TYPE_VECTOR_SUBPARTS (vectype);
--- 4075,4084 ----
tree *elts;
int i;
bool nested_in_vect_loop = false;
REAL_VALUE_TYPE real_init_val = dconst0;
int int_init_val = 0;
gimple *def_stmt = NULL;
+ gimple_seq stmts = NULL;
gcc_assert (vectype);
nunits = TYPE_VECTOR_SUBPARTS (vectype);
*************** get_initial_def_for_reduction (gimple *s
*** 4107,4122 ****
return vect_create_destination_var (init_val, vectype);
}
- if (TREE_CONSTANT (init_val))
- {
- if (SCALAR_FLOAT_TYPE_P (scalar_type))
- init_value = build_real (scalar_type, TREE_REAL_CST (init_val));
- else
- init_value = build_int_cst (scalar_type, TREE_INT_CST_LOW (init_val));
- }
- else
- init_value = init_val;
-
switch (code)
{
case WIDEN_SUM_EXPR:
--- 4107,4112 ----
*************** get_initial_def_for_reduction (gimple *s
*** 4193,4199 ****
break;
}
}
! init_def = build_vector_from_val (vectype, init_value);
break;
default:
--- 4183,4192 ----
break;
}
}
! init_val = gimple_convert (&stmts, TREE_TYPE (vectype), init_val);
! if (! gimple_seq_empty_p (stmts))
! gsi_insert_seq_on_edge_immediate (loop_preheader_edge (loop), stmts);
! init_def = build_vector_from_val (vectype, init_val);
break;
default:
Index: gcc/testsuite/g++.dg/torture/pr69053.C
===================================================================
*** gcc/testsuite/g++.dg/torture/pr69053.C (revision 0)
--- gcc/testsuite/g++.dg/torture/pr69053.C (working copy)
***************
*** 0 ****
--- 1,17 ----
+ // { dg-do compile }
+ // { dg-additional-options "-march=core-avx2" { target x86_64-*-* i?86-*-* } }
+ struct A {
+ int *elem[1];
+ };
+ int a, d, e;
+ A *b;
+ int *c;
+ int main()
+ {
+ int *f = 0;
+ for (; e; e++)
+ if (b->elem[e])
+ f = c;
+ if (f)
+ a = d;
+ }
reply other threads:[~2016-01-12 11:39 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LSU.2.11.1601121238550.31122@t29.fhfr.qr \
--to=rguenther@suse.de \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).