public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
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).