public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
@ 2013-11-09  4:52 su at cs dot ucdavis.edu
  2013-11-09  8:48 ` [Bug tree-optimization/59058] " glisse at gcc dot gnu.org
                   ` (16 more replies)
  0 siblings, 17 replies; 18+ messages in thread
From: su at cs dot ucdavis.edu @ 2013-11-09  4:52 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

            Bug ID: 59058
           Summary: wrong code at -O3 on x86_64-linux-gnu (affecting gcc
                    4.6 to trunk)
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: su at cs dot ucdavis.edu

The current gcc trunk (as well as 4.6, 4.7, and 4.8) miscompiles the following
code on x86_64-linux-gnu at -O3 in both 32-bit and 64-bit modes. 

It also affects gcc 4.6 and 4.7 at -O2, older versions of gcc, and on other
platforms. 

For trunk and 4.8 (but not for 4.6 and 4.7 though), -fno-tree-vectorize makes
the bug go away. 

Interestingly also, both the current clang and icc fail on this testcase too. 

$ gcc-trunk -v
Using built-in specs.
COLLECT_GCC=gcc-trunk
COLLECT_LTO_WRAPPER=/usr/local/gcc-trunk/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-trunk/configure
--enable-languages=c,c++,objc,obj-c++,fortran,lto --disable-werror
--enable-checking=release --with-gmp=/usr/local/gcc-trunk
--with-mpfr=/usr/local/gcc-trunk --with-mpc=/usr/local/gcc-trunk
--with-cloog=/usr/local/gcc-trunk --prefix=/usr/local/gcc-trunk
Thread model: posix
gcc version 4.9.0 20131108 (experimental) [trunk revision 204593] (GCC) 
$ 
$ gcc-trunk -O2 small.c; a.out
-1
$ gcc-trunk -O3 small.c; a.out
7
$ gcc-4.8.2 -O3 small.c; a.out
7
$ gcc-4.7.3 -O3 small.c; a.out
131071
$ gcc-4.7.3 -O2 small.c; a.out
131071
$ gcc-4.6.4 -O3 small.c; a.out
131071
$ gcc-4.6.4 -O2 small.c; a.out
131071
$ 
$ gcc-trunk -O3 -fno-tree-vectorize small.c; a.out
-1
$ gcc-4.8.2 -O3 -fno-tree-vectorize small.c; a.out
-1
$ gcc-4.7.3 -O3 -fno-tree-vectorize small.c; a.out
131071
$ gcc-4.6.4 -O3 -fno-tree-vectorize small.c; a.out
131071
$
$ clang-trunk -O3 small.c; a.out
0
$ icc -O3 small.c; a.out
1
$ 


--------------------------------------


int printf (const char *, ...);

int a, c, d;
short b = -1; 

void 
foo ()
{
  b++;
}

void 
bar ()
{
l1:
  foo ();
  d = -3;
  for (a = 0; a > -3; a = d)
    c |= b;
  if (b)
    goto l1;
}

int 
main ()
{
  b++;
l2:
  if (b)
    goto l2;
  bar ();
  printf ("%d\n", c);
  return 0;
}


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
@ 2013-11-09  8:48 ` glisse at gcc dot gnu.org
  2013-11-11 15:48 ` [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] " rguenth at gcc dot gnu.org
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: glisse at gcc dot gnu.org @ 2013-11-09  8:48 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> ---
For the vectorizer issue on trunk, this is enough:

int printf (const char *, ...);

short b = 0; 

int 
main ()
{
  int c = 0;
l1:
  b++;
  c |= b;
  if (b)
    goto l1;
  printf ("%d\n", c);
  return 0;
}

This code relies on the gcc extension that casting to a shorter integer is done
modulo 2. Note that if we move the declaration of b inside the function, the
compiler (wrongly?) warns:
s.c:11:4: warning: iteration 32767u invokes undefined behavior
[-Waggressive-loop-optimizations]
   b++;
    ^
s.c:13:6: note: containing loop
   if (b)
      ^
(and the return value changes from 7 to 131071)


2 missed optimizations while looking at the dumps:

  stmp_var_.12_46 = _4 + 1;
  stmp_var_.12_47 = _4 + 2;
  stmp_var_.12_48 = _4 + 3;
  stmp_var_.12_49 = _4 + 4;
  stmp_var_.12_50 = _4 + 5;
  stmp_var_.12_51 = _4 + 6;
  stmp_var_.12_52 = _4 + 7;
  vect_cst_.13_53 = {_4, stmp_var_.12_46, stmp_var_.12_47, stmp_var_.12_48,
stmp_var_.12_49, stmp_var_.12_50, stmp_var_.12_51, stmp_var_.12_52};

This should really be:

  v = { _4, _4, ... };
  w = v + { 0, 1, 2, ... };

Also:

  vector(8) unsigned short vect_b.17;
  vector(8) short int vect_vec_iv_.16;
  vector(8) unsigned short vect_vec_iv_.15;
[...]
  vect_vec_iv_.16_57 = VIEW_CONVERT_EXPR<vector(8) short
int>(vect_vec_iv_.15_55);
  vect_vec_iv_.15_56 = vect_vec_iv_.15_55 + vect_cst_.14_54;
  vect_b.17_58 = VIEW_CONVERT_EXPR<vector(8) unsigned
short>(vect_vec_iv_.16_57);

vect_b.17_58 is vect_vec_iv_.15_55, not sure why we don't see through that.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
  2013-11-09  8:48 ` [Bug tree-optimization/59058] " glisse at gcc dot gnu.org
@ 2013-11-11 15:48 ` rguenth at gcc dot gnu.org
  2013-11-19 15:05 ` rguenth at gcc dot gnu.org
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-11 15:48 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
      Known to work|                            |3.3.6
           Keywords|                            |wrong-code
   Last reconfirmed|                            |2013-11-11
     Ever confirmed|0                           |1
            Summary|wrong code at -O3 on        |[4.7/4.8/4.9 Regression]
                   |x86_64-linux-gnu (affecting |wrong code at -O3 on
                   |gcc 4.6 to trunk)           |x86_64-linux-gnu (affecting
                   |                            |gcc 4.6 to trunk)
   Target Milestone|---                         |4.7.4
      Known to fail|                            |4.1.2

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed, works with 3.3.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
  2013-11-09  8:48 ` [Bug tree-optimization/59058] " glisse at gcc dot gnu.org
  2013-11-11 15:48 ` [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] " rguenth at gcc dot gnu.org
@ 2013-11-19 15:05 ` rguenth at gcc dot gnu.org
  2013-11-20 11:45 ` rguenth at gcc dot gnu.org
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-19 15:05 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot gnu.org

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
I will have a look.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (2 preceding siblings ...)
  2013-11-19 15:05 ` rguenth at gcc dot gnu.org
@ 2013-11-20 11:45 ` rguenth at gcc dot gnu.org
  2013-11-20 12:08 ` rguenth at gcc dot gnu.org
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-20 11:45 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
I think the issue is

 (set_nb_iterations_in_loop = ~(unsigned short) pretmp_22))
t.c:12:6: note: ==> get_loop_niters:-(unsigned short) pretmp_22

that is, number_of_exit_cond_executions which returns
number_of_latch_executions + 1 but does not check for overflow.
It checks

  ret = chrec_fold_plus (type, ret, build_int_cst (type, 1));
  if (TREE_CODE (ret) == INTEGER_CST
      && TREE_OVERFLOW (ret))
    return chrec_dont_know;

but obviously that only works for constants.

It might be best to eliminate uses of number_of_exit_cond_executions
in favor of number_of_latch_executions (while adjusting users of course,
vectorization and loop distribution).  We can also use a wider
type here (within certain limits, of course).


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (3 preceding siblings ...)
  2013-11-20 11:45 ` rguenth at gcc dot gnu.org
@ 2013-11-20 12:08 ` rguenth at gcc dot gnu.org
  2013-11-20 12:28 ` rguenth at gcc dot gnu.org
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-20 12:08 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Unfortunately

@@ -2930,11 +2931,31 @@ number_of_exit_cond_executions (struct l
   if (chrec_contains_undetermined (ret))
     return ret;

-  ret = chrec_fold_plus (type, ret, build_int_cst (type, 1));
-  if (TREE_CODE (ret) == INTEGER_CST
-      && TREE_OVERFLOW (ret))
+  /* Handle constants without widening.  */
+  if (TREE_CODE (ret) == INTEGER_CST)
+    {
+      double_int adj = tree_to_double_int (ret) + double_int_one;
+      if (double_int_fits_to_tree_p (type, adj))
+       return double_int_to_tree (type, adj);
+    }
+
+  /* For the remaining case widen to an unsigned type from a
+     signed one or to one with at least one bit more precision
+     but not larger than using word_mode.  */
+  if (!TYPE_UNSIGNED (type))
+    type = unsigned_type_for (type);
+  else if (GET_MODE_CLASS (TYPE_MODE (type)) == MODE_INT
+          && TYPE_PRECISION (type) < GET_MODE_PRECISION (word_mode))
+    {
+      enum machine_mode mode;
+      mode = smallest_mode_for_size (TYPE_PRECISION (type) + 1, MODE_INT);
+      type = build_nonstandard_integer_type (GET_MODE_PRECISION (mode), 1);
+    }
+  else
     return chrec_dont_know;

+  ret = chrec_convert (type, ret, NULL);
+  ret = chrec_fold_plus (type, ret, build_int_cst (type, 1));
   return ret;
 }

breaks loops which use size_t as induction variable type.  But they
are possibly miscompiled anyway.  Not sure if we can rely on
the availability of arithmetics on modes > word_mode, can we?


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (4 preceding siblings ...)
  2013-11-20 12:08 ` rguenth at gcc dot gnu.org
@ 2013-11-20 12:28 ` rguenth at gcc dot gnu.org
  2013-11-20 13:07 ` rguenth at gcc dot gnu.org
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-20 12:28 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
I improve this with also using max_stmt_executions I at least get no
vect.exp fail but the testcase in this PR is not vectorized when using
a size_t b.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (5 preceding siblings ...)
  2013-11-20 12:28 ` rguenth at gcc dot gnu.org
@ 2013-11-20 13:07 ` rguenth at gcc dot gnu.org
  2013-11-20 13:50 ` rguenth at gcc dot gnu.org
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-20 13:07 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
Still FAILs to vectorize gcc.dg/vect/pr18425.c with -m32.  But we have here

=> get_loop_niters:(unsigned long) (__n_7(D) + 4294967295) + 1

that could have been simplified.  __n is unsigned int.  So I can special
case that (but really only that ... still common enough).


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (6 preceding siblings ...)
  2013-11-20 13:07 ` rguenth at gcc dot gnu.org
@ 2013-11-20 13:50 ` rguenth at gcc dot gnu.org
  2013-11-21  9:15 ` rguenth at gcc dot gnu.org
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-20 13:50 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
Created attachment 31259
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31259&action=edit
candidate patch

Candidate patch.

But I think it's better to remove this functions users.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (7 preceding siblings ...)
  2013-11-20 13:50 ` rguenth at gcc dot gnu.org
@ 2013-11-21  9:15 ` rguenth at gcc dot gnu.org
  2013-11-21 14:09 ` rguenth at gcc dot gnu.org
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-21  9:15 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
Author: rguenth
Date: Thu Nov 21 09:15:05 2013
New Revision: 205197

URL: http://gcc.gnu.org/viewcvs?rev=205197&root=gcc&view=rev
Log:
2013-11-21  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/59058
    * tree-loop-distribution.c (struct partition_s): Add plus_one
    member.
    (build_size_arg_loc): Apply niter adjustment here.
    (generate_memset_builtin): Adjust.
    (generate_memcpy_builtin): Likewise.
    (classify_partition): Do not use number_of_exit_cond_executions
    but record whether niter needs to be adjusted.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/tree-loop-distribution.c


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (8 preceding siblings ...)
  2013-11-21  9:15 ` rguenth at gcc dot gnu.org
@ 2013-11-21 14:09 ` rguenth at gcc dot gnu.org
  2013-12-03 16:31 ` jakub at gcc dot gnu.org
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-21 14:09 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
Author: rguenth
Date: Thu Nov 21 14:09:15 2013
New Revision: 205217

URL: http://gcc.gnu.org/viewcvs?rev=205217&root=gcc&view=rev
Log:
2013-11-21  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/59058
    * tree-scalar-evolution.h (number_of_exit_cond_executions): Remove.
    * tree-scalar-evolution.c (number_of_exit_cond_executions): Likewise.
    * tree-vectorizer.h (LOOP_PEELING_FOR_ALIGNMENT): Rename to ...
    (LOOP_VINFO_PEELING_FOR_ALIGNMENT): ... this.
    (NITERS_KNOWN_P): Fold into ...
    (LOOP_VINFO_NITERS_KNOWN_P): ... this.
    (LOOP_VINFO_PEELING_FOR_NITER): Add.
    * tree-vect-loop-manip.c (vect_gen_niters_for_prolog_loop):
    Use LOOP_VINFO_PEELING_FOR_ALIGNMENT.
    (vect_do_peeling_for_alignment): Re-use precomputed niter
    instead of re-emitting it.
    * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
    Use LOOP_VINFO_PEELING_FOR_ALIGNMENT.
    * tree-vect-loop.c (vect_get_loop_niters): Use
    number_of_latch_executions.
    (new_loop_vec_info): Initialize LOOP_VINFO_PEELING_FOR_NITER.
    (vect_analyze_loop_form): Simplify.
    (vect_analyze_loop_operations): Move epilogue peeling code ...
    (vect_analyze_loop_2): ... here and adjust it to compute
    LOOP_VINFO_PEELING_FOR_NITER.
    (vect_estimate_min_profitable_iters): Use
    LOOP_VINFO_PEELING_FOR_ALIGNMENT.
    (vect_build_loop_niters): Emit on the preheader.
    (vect_generate_tmps_on_preheader): Likewise.
    (vect_transform_loop): Use LOOP_VINFO_PEELING_FOR_NITER instead
    of recomputing it.  Adjust.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/tree-scalar-evolution.c
    trunk/gcc/tree-scalar-evolution.h
    trunk/gcc/tree-vect-data-refs.c
    trunk/gcc/tree-vect-loop-manip.c
    trunk/gcc/tree-vect-loop.c
    trunk/gcc/tree-vectorizer.h


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (9 preceding siblings ...)
  2013-11-21 14:09 ` rguenth at gcc dot gnu.org
@ 2013-12-03 16:31 ` jakub at gcc dot gnu.org
  2013-12-03 18:50 ` rguenther at suse dot de
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-12-03 16:31 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So, is this fully fixed now on the trunk?


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (10 preceding siblings ...)
  2013-12-03 16:31 ` jakub at gcc dot gnu.org
@ 2013-12-03 18:50 ` rguenther at suse dot de
  2013-12-06  9:23 ` rguenth at gcc dot gnu.org
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenther at suse dot de @ 2013-12-03 18:50 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

--- Comment #12 from rguenther at suse dot de <rguenther at suse dot de> ---
"jakub at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> wrote:
>http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058
>
>Jakub Jelinek <jakub at gcc dot gnu.org> changed:
>
>           What    |Removed                     |Added
>----------------------------------------------------------------------------
>               CC|                            |jakub at gcc dot gnu.org
>
>--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
>So, is this fully fixed now on the trunk?

No, it's not fixed.

Richard.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (11 preceding siblings ...)
  2013-12-03 18:50 ` rguenther at suse dot de
@ 2013-12-06  9:23 ` rguenth at gcc dot gnu.org
  2013-12-06 12:42 ` [Bug tree-optimization/59058] [4.7/4.8 " rguenth at gcc dot gnu.org
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-12-06  9:23 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> ---
Author: rguenth
Date: Fri Dec  6 09:23:07 2013
New Revision: 205730

URL: http://gcc.gnu.org/viewcvs?rev=205730&root=gcc&view=rev
Log:
2013-12-06  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/59058
    * tree-vectorizer.h (struct _loop_vec_info): Add num_itersm1
    member.
    (LOOP_VINFO_NITERSM1): New macro.
    * tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): Express
    the vector loop entry test in terms of scalar latch executions.
    (vect_do_peeling_for_alignment): Update LOOP_VINFO_NITERSM1.
    * tree-vect-loop.c (vect_get_loop_niters): Also return the
    number of latch executions.
    (new_loop_vec_info): Initialize LOOP_VINFO_NITERSM1.
    (vect_analyze_loop_form): Likewise.
    (vect_generate_tmps_on_preheader): Compute the number of
    vectorized iterations differently.

    * gcc.dg/torture/pr59058.c: New testcase.

Added:
    trunk/gcc/testsuite/gcc.dg/torture/pr59058.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-vect-loop-manip.c
    trunk/gcc/tree-vect-loop.c
    trunk/gcc/tree-vectorizer.h


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (12 preceding siblings ...)
  2013-12-06  9:23 ` rguenth at gcc dot gnu.org
@ 2013-12-06 12:42 ` rguenth at gcc dot gnu.org
  2014-06-12 13:48 ` rguenth at gcc dot gnu.org
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-12-06 12:42 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |4.9.0
            Summary|[4.7/4.8/4.9 Regression]    |[4.7/4.8 Regression] wrong
                   |wrong code at -O3 on        |code at -O3 on
                   |x86_64-linux-gnu (affecting |x86_64-linux-gnu (affecting
                   |gcc 4.6 to trunk)           |gcc 4.6 to trunk)

--- Comment #14 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed on trunk sofar.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.7/4.8 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (13 preceding siblings ...)
  2013-12-06 12:42 ` [Bug tree-optimization/59058] [4.7/4.8 " rguenth at gcc dot gnu.org
@ 2014-06-12 13:48 ` rguenth at gcc dot gnu.org
  2014-12-19 13:42 ` [Bug tree-optimization/59058] [4.8 " jakub at gcc dot gnu.org
  2015-06-23  8:45 ` rguenth at gcc dot gnu.org
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-06-12 13:48 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.7.4                       |4.8.4

--- Comment #15 from Richard Biener <rguenth at gcc dot gnu.org> ---
The 4.7 branch is being closed, moving target milestone to 4.8.4.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.8 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (14 preceding siblings ...)
  2014-06-12 13:48 ` rguenth at gcc dot gnu.org
@ 2014-12-19 13:42 ` jakub at gcc dot gnu.org
  2015-06-23  8:45 ` rguenth at gcc dot gnu.org
  16 siblings, 0 replies; 18+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-12-19 13:42 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.8.4                       |4.8.5

--- Comment #16 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 4.8.4 has been released.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Bug tree-optimization/59058] [4.8 Regression] wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk)
  2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
                   ` (15 preceding siblings ...)
  2014-12-19 13:42 ` [Bug tree-optimization/59058] [4.8 " jakub at gcc dot gnu.org
@ 2015-06-23  8:45 ` rguenth at gcc dot gnu.org
  16 siblings, 0 replies; 18+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-06-23  8:45 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59058

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|4.8.5                       |4.9.0
      Known to fail|                            |4.8.5

--- Comment #17 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed for 4.9.0.


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2015-06-23  8:45 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-09  4:52 [Bug tree-optimization/59058] New: wrong code at -O3 on x86_64-linux-gnu (affecting gcc 4.6 to trunk) su at cs dot ucdavis.edu
2013-11-09  8:48 ` [Bug tree-optimization/59058] " glisse at gcc dot gnu.org
2013-11-11 15:48 ` [Bug tree-optimization/59058] [4.7/4.8/4.9 Regression] " rguenth at gcc dot gnu.org
2013-11-19 15:05 ` rguenth at gcc dot gnu.org
2013-11-20 11:45 ` rguenth at gcc dot gnu.org
2013-11-20 12:08 ` rguenth at gcc dot gnu.org
2013-11-20 12:28 ` rguenth at gcc dot gnu.org
2013-11-20 13:07 ` rguenth at gcc dot gnu.org
2013-11-20 13:50 ` rguenth at gcc dot gnu.org
2013-11-21  9:15 ` rguenth at gcc dot gnu.org
2013-11-21 14:09 ` rguenth at gcc dot gnu.org
2013-12-03 16:31 ` jakub at gcc dot gnu.org
2013-12-03 18:50 ` rguenther at suse dot de
2013-12-06  9:23 ` rguenth at gcc dot gnu.org
2013-12-06 12:42 ` [Bug tree-optimization/59058] [4.7/4.8 " rguenth at gcc dot gnu.org
2014-06-12 13:48 ` rguenth at gcc dot gnu.org
2014-12-19 13:42 ` [Bug tree-optimization/59058] [4.8 " jakub at gcc dot gnu.org
2015-06-23  8:45 ` rguenth at gcc dot gnu.org

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).