public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/47903] New: var-tracking.c: valgrind error
@ 2011-02-26  9:55 dcb314 at hotmail dot com
  2011-02-26 15:42 ` [Bug middle-end/47903] " jakub at gcc dot gnu.org
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: dcb314 at hotmail dot com @ 2011-02-26  9:55 UTC (permalink / raw)
  To: gcc-bugs

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

           Summary: var-tracking.c: valgrind error
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: dcb314@hotmail.com


Created attachment 23476
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23476
C++ source code

I just tried to compile the attached C++ code with the latest 4.6 snapshot
20110219 under valgrind on a Linux x86_64 box.

Valgrind said

==12657== Conditional jump or move depends on uninitialised value(s)
==12657==    at 0xACA1EC: loc_cmp (var-tracking.c:2817)
==12657==    by 0xACA95D: onepart_variable_different_p (var-tracking.c:4402)
==12657==    by 0xAD1D32: emit_notes_for_differences_1 (var-tracking.c:4421)
==12657==    by 0xE09FA7: htab_traverse_noresize (hashtab.c:784)
==12657==    by 0xAD59E0: vt_emit_notes (var-tracking.c:7629)
==12657==    by 0xAD8D22: variable_tracking_main (var-tracking.c:8583)
==12657==    by 0x895D35: execute_one_pass (passes.c:1556)
==12657==    by 0x896034: execute_pass_list (passes.c:1611)
==12657==    by 0x896046: execute_pass_list (passes.c:1612)
==12657==    by 0x896046: execute_pass_list (passes.c:1612)
==12657==    by 0x98E6E5: tree_rest_of_compilation (tree-optimize.c:422)
==12657==    by 0xB32921: cgraph_expand_function (cgraphunit.c:1576)
==12657==
==12657== Conditional jump or move depends on uninitialised value(s)
==12657==    at 0xACA960: onepart_variable_different_p (var-tracking.c:4402)
==12657==    by 0xAD1D32: emit_notes_for_differences_1 (var-tracking.c:4421)
==12657==    by 0xE09FA7: htab_traverse_noresize (hashtab.c:784)
==12657==    by 0xAD59E0: vt_emit_notes (var-tracking.c:7629)
==12657==    by 0xAD8D22: variable_tracking_main (var-tracking.c:8583)
==12657==    by 0x895D35: execute_one_pass (passes.c:1556)
==12657==    by 0x896034: execute_pass_list (passes.c:1611)
==12657==    by 0x896046: execute_pass_list (passes.c:1612)
==12657==    by 0x896046: execute_pass_list (passes.c:1612)
==12657==    by 0x98E6E5: tree_rest_of_compilation (tree-optimize.c:422)
==12657==    by 0xB32921: cgraph_expand_function (cgraphunit.c:1576)
==12657==    by 0xB35069: cgraph_optimize (cgraphunit.c:1635)
==12657==

Flags -g -O3 required.


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

* [Bug middle-end/47903] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
@ 2011-02-26 15:42 ` jakub at gcc dot gnu.org
  2011-02-26 16:04 ` jakub at gcc dot gnu.org
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-02-26 15:42 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2011.02.26 15:35:05
         AssignedTo|unassigned at gcc dot       |jakub at gcc dot gnu.org
                   |gnu.org                     |
     Ever Confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-02-26 15:35:05 UTC ---
Created attachment 23479
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23479
gcc46-pr47903.patch

The problem is that for binary real_arithmetic calls other than min/max the
padding bits (on 64-bit arches there are e.g. 32 bits in between uexp and sig)
are left uninitialized (for min/max/negate/abs we copy one of the arguments to
the result first).  If the target hasn't been initialized before, is an
automatic variable and we then build_real from it (or construct CONST_DOUBLE),
the padding bits are left uninitialized.

Some functions are already taking care of initializing the padding, e.g.
real_value_from_int_cst, or get_inf, or real_nan, many others start by copying
some earlier REAL_VALUE_TYPE to the result first.  real_arithmetic calls
with PLUS/MINUS/MULT/RDIV can't do that easily (because the result might be
same as either of the operands which will be still needed), so this patch
changes the callers of that function where this problem happens (const_binop)
or where IMHO might happen (the rest).


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

* [Bug middle-end/47903] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
  2011-02-26 15:42 ` [Bug middle-end/47903] " jakub at gcc dot gnu.org
@ 2011-02-26 16:04 ` jakub at gcc dot gnu.org
  2011-02-26 16:23 ` [Bug middle-end/47903] [4.5/4.6 Regression] " jakub at gcc dot gnu.org
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-02-26 16:04 UTC (permalink / raw)
  To: gcc-bugs

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

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

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


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

* [Bug middle-end/47903] [4.5/4.6 Regression] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
  2011-02-26 15:42 ` [Bug middle-end/47903] " jakub at gcc dot gnu.org
  2011-02-26 16:04 ` jakub at gcc dot gnu.org
@ 2011-02-26 16:23 ` jakub at gcc dot gnu.org
  2011-02-27 19:45 ` jakub at gcc dot gnu.org
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-02-26 16:23 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|var-tracking.c: valgrind    |[4.5/4.6 Regression]
                   |error                       |var-tracking.c: valgrind
                   |                            |error

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-02-26 15:42:29 UTC ---
I can reproduce it even with 4.5.1 and obviously when it hits in var-tracking.c
(loc_cmp), it is a 4.5/4.6 regression, as 4.4 and earlier didn't do VALUE based
tracking.


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

* [Bug middle-end/47903] [4.5/4.6 Regression] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
                   ` (2 preceding siblings ...)
  2011-02-26 16:23 ` [Bug middle-end/47903] [4.5/4.6 Regression] " jakub at gcc dot gnu.org
@ 2011-02-27 19:45 ` jakub at gcc dot gnu.org
  2011-02-27 19:46 ` [Bug middle-end/47903] [4.5 " jakub at gcc dot gnu.org
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-02-27 19:45 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-02-27 19:37:38 UTC ---
Author: jakub
Date: Sun Feb 27 19:37:35 2011
New Revision: 170547

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=170547
Log:
    PR middle-end/47903
    * real.c (real_arithmetic) <case PLUS_EXPR, MINUS_EXPR,
    MULT_EXPR, RDIV_EXPR>: Clear padding bits in *r first if
    r isn't op0 nor op1.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/real.c


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

* [Bug middle-end/47903] [4.5 Regression] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
                   ` (3 preceding siblings ...)
  2011-02-27 19:45 ` jakub at gcc dot gnu.org
@ 2011-02-27 19:46 ` jakub at gcc dot gnu.org
  2011-03-25 20:10 ` jakub at gcc dot gnu.org
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-02-27 19:46 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.5/4.6 Regression]        |[4.5 Regression]
                   |var-tracking.c: valgrind    |var-tracking.c: valgrind
                   |error                       |error

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-02-27 19:40:24 UTC ---
Fixed on the trunk so far.


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

* [Bug middle-end/47903] [4.5 Regression] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
                   ` (4 preceding siblings ...)
  2011-02-27 19:46 ` [Bug middle-end/47903] [4.5 " jakub at gcc dot gnu.org
@ 2011-03-25 20:10 ` jakub at gcc dot gnu.org
  2011-06-27 16:36 ` jakub at gcc dot gnu.org
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-03-25 20:10 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.6.0                       |4.6.1

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-03-25 19:53:22 UTC ---
GCC 4.6.0 is being released, adjusting target milestone.


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

* [Bug middle-end/47903] [4.5 Regression] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
                   ` (5 preceding siblings ...)
  2011-03-25 20:10 ` jakub at gcc dot gnu.org
@ 2011-06-27 16:36 ` jakub at gcc dot gnu.org
  2011-10-10 12:43 ` rguenth at gcc dot gnu.org
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-06-27 16:36 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.6.1                       |4.6.2

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-06-27 12:33:18 UTC ---
GCC 4.6.1 is being released.


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

* [Bug middle-end/47903] [4.5 Regression] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
                   ` (6 preceding siblings ...)
  2011-06-27 16:36 ` jakub at gcc dot gnu.org
@ 2011-10-10 12:43 ` rguenth at gcc dot gnu.org
  2012-06-20 12:57 ` rguenth at gcc dot gnu.org
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-10-10 12:43 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.6.2                       |4.5.4


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

* [Bug middle-end/47903] [4.5 Regression] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
                   ` (7 preceding siblings ...)
  2011-10-10 12:43 ` rguenth at gcc dot gnu.org
@ 2012-06-20 12:57 ` rguenth at gcc dot gnu.org
  2012-06-20 13:56 ` rguenth at gcc dot gnu.org
  2012-06-20 14:49 ` rguenth at gcc dot gnu.org
  10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-06-20 12:57 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2


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

* [Bug middle-end/47903] [4.5 Regression] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
                   ` (8 preceding siblings ...)
  2012-06-20 12:57 ` rguenth at gcc dot gnu.org
@ 2012-06-20 13:56 ` rguenth at gcc dot gnu.org
  2012-06-20 14:49 ` rguenth at gcc dot gnu.org
  10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-06-20 13:56 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-06-20 13:56:01 UTC ---
Author: rguenth
Date: Wed Jun 20 13:55:44 2012
New Revision: 188834

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188834
Log:
2012-06-20  Richard Guenther  <rguenther@suse.de>

    Backport from mainline
    2010-12-18  Jakub Jelinek  <jakub@redhat.com>

    PR tree-optimization/46985
    * tree-scalar-evolution.c (instantiate_scev_r): If chrec is NULL,
    return it immediately.

    * gfortran.dg/pr46985.f90: New test.

    2011-02-18  Jakub Jelinek  <jakub@redhat.com>

    PR debug/47780
    * cfgexpand.c (expand_debug_expr) <case SSA_NAME>: Call copy_rtx to
    avoid invalid rtx sharing.

    * gcc.target/i386/pr47780.c: New test.

    2011-02-27  Jakub Jelinek  <jakub@redhat.com>

    PR middle-end/47903
    * real.c (real_arithmetic) <case PLUS_EXPR, MINUS_EXPR,
    MULT_EXPR, RDIV_EXPR>: Clear padding bits in *r first if
    r isn't op0 nor op1.

Added:
    branches/gcc-4_5-branch/gcc/testsuite/gcc.target/i386/pr47780.c
    branches/gcc-4_5-branch/gcc/testsuite/gfortran.dg/pr46985.f90
Modified:
    branches/gcc-4_5-branch/gcc/ChangeLog
    branches/gcc-4_5-branch/gcc/cfgexpand.c
    branches/gcc-4_5-branch/gcc/real.c
    branches/gcc-4_5-branch/gcc/testsuite/ChangeLog
    branches/gcc-4_5-branch/gcc/tree-scalar-evolution.c


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

* [Bug middle-end/47903] [4.5 Regression] var-tracking.c: valgrind error
  2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
                   ` (9 preceding siblings ...)
  2012-06-20 13:56 ` rguenth at gcc dot gnu.org
@ 2012-06-20 14:49 ` rguenth at gcc dot gnu.org
  10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-06-20 14:49 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #8 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-06-20 14:49:09 UTC ---
Fixed.


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

end of thread, other threads:[~2012-06-20 14:49 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-26  9:55 [Bug c++/47903] New: var-tracking.c: valgrind error dcb314 at hotmail dot com
2011-02-26 15:42 ` [Bug middle-end/47903] " jakub at gcc dot gnu.org
2011-02-26 16:04 ` jakub at gcc dot gnu.org
2011-02-26 16:23 ` [Bug middle-end/47903] [4.5/4.6 Regression] " jakub at gcc dot gnu.org
2011-02-27 19:45 ` jakub at gcc dot gnu.org
2011-02-27 19:46 ` [Bug middle-end/47903] [4.5 " jakub at gcc dot gnu.org
2011-03-25 20:10 ` jakub at gcc dot gnu.org
2011-06-27 16:36 ` jakub at gcc dot gnu.org
2011-10-10 12:43 ` rguenth at gcc dot gnu.org
2012-06-20 12:57 ` rguenth at gcc dot gnu.org
2012-06-20 13:56 ` rguenth at gcc dot gnu.org
2012-06-20 14:49 ` 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).