public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug debug/41447]  New: Wrong debug with VTA on temporaries initialized from memory variable
@ 2009-09-23 13:29 jakub at gcc dot gnu dot org
  2009-09-23 13:55 ` [Bug debug/41447] " rguenth at gcc dot gnu dot org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: jakub at gcc dot gnu dot org @ 2009-09-23 13:29 UTC (permalink / raw)
  To: gcc-bugs

As reported by Richard in
int a;

int foo()
{
  int tmp = a;
  int tmp2 = a;
  int tmp3;
  int res;
  a = 0;
  tmp3 = tmp2;
  res = tmp - tmp2 + 1;
  return res;
}
results in wrong-debug with -O2 -g.  Having # DEBUG tmp3 => a
after a = 0 is wrong certainly already at gimple levels, while # DEBUG tmp1 =>
a
and # DEBUG tmp2 => a could be in theory handled only at the var-tracking
level, but even there var-tracking fails to notice that the a = 0 store can
clobber the memory (i.e. that the VALUE should be clobbered, and in theory e.g.
most calls should be considered to clobber non-stack MEMs etc., as usually) and
add notes that tmp1/tmp2 don't have known values anymore.


-- 
           Summary: Wrong debug with VTA on temporaries initialized from
                    memory variable
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jakub at gcc dot gnu dot org


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


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

* [Bug debug/41447] Wrong debug with VTA on temporaries initialized from memory variable
  2009-09-23 13:29 [Bug debug/41447] New: Wrong debug with VTA on temporaries initialized from memory variable jakub at gcc dot gnu dot org
@ 2009-09-23 13:55 ` rguenth at gcc dot gnu dot org
  2009-10-06  4:25 ` aoliva at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-09-23 13:55 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from rguenth at gcc dot gnu dot org  2009-09-23 13:55 -------
Confirmed.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |wrong-debug
   Last reconfirmed|0000-00-00 00:00:00         |2009-09-23 13:55:43
               date|                            |


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


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

* [Bug debug/41447] Wrong debug with VTA on temporaries initialized from memory variable
  2009-09-23 13:29 [Bug debug/41447] New: Wrong debug with VTA on temporaries initialized from memory variable jakub at gcc dot gnu dot org
  2009-09-23 13:55 ` [Bug debug/41447] " rguenth at gcc dot gnu dot org
@ 2009-10-06  4:25 ` aoliva at gcc dot gnu dot org
  2009-10-12 18:59 ` aoliva at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: aoliva at gcc dot gnu dot org @ 2009-10-06  4:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from aoliva at gcc dot gnu dot org  2009-10-06 04:25 -------
The patch that introduces debug temps fixes this bug.
http://gcc.gnu.org/ml/gcc-patches/2009-10/msg00112.html


-- 

aoliva at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |aoliva at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED


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


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

* [Bug debug/41447] Wrong debug with VTA on temporaries initialized from memory variable
  2009-09-23 13:29 [Bug debug/41447] New: Wrong debug with VTA on temporaries initialized from memory variable jakub at gcc dot gnu dot org
  2009-09-23 13:55 ` [Bug debug/41447] " rguenth at gcc dot gnu dot org
  2009-10-06  4:25 ` aoliva at gcc dot gnu dot org
@ 2009-10-12 18:59 ` aoliva at gcc dot gnu dot org
  2009-10-12 20:01 ` aoliva at gcc dot gnu dot org
  2009-10-14  5:02 ` aoliva at gcc dot gnu dot org
  4 siblings, 0 replies; 6+ messages in thread
From: aoliva at gcc dot gnu dot org @ 2009-10-12 18:59 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from aoliva at gcc dot gnu dot org  2009-10-12 18:59 -------
Subject: Bug 41447

Author: aoliva
Date: Mon Oct 12 18:58:38 2009
New Revision: 152681

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=152681
Log:
gcc/ChangeLog:
PR debug/41343
PR debug/41447
PR debug/41264
PR debug/41338
* tree.def (DEBUG_EXPR_DECL): New.
* rtl.def (DEBUG_EXPR): New.
* gengtype.c (adjust_field_rtx_def): Handle it.
* tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
(insert_debug_temp_for_var_def): ... this.  Drop support for
moving.  Take iterator for def stmt; insert debug stmt before it.
Scan early for use count and kind in debug stmts.
(propagate_defs_into_debug_stmts): Rename to...
(insert_debug_temps_for_defs): ... this.  Likewise.
* tree.h (DEBUG_TEMP_UID): New.
* tree.c (next_debug_decl_uid): New.
(make_node_stat): Count debug decls separately.
(copy_node_stat): Likewise.
* cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
* var-tracking.c (dv_is_decl_p): Recognize it.
(VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
(track_expr_p): Track expanded DEBUG_EXPR_DECLs.
(vt_expand_loc_callback): Expand DEBUG_EXPRs.
(emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
* cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
(cselib_hash_rtx): Likewise.
(cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
* tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
debug bind stmts.
* emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
(copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
* rtl.c (copy_rtx): Likewise.
(rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
* print-rtl.c (print_rtx): Likewise.
* sched-vis.c (print_value): Likewise.
(print_insn): Handle DEBUG_EXPR_DECL.
* tree-dump.c (dequeue_and_dump): Likewise.
* tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
* gimple-iterator (gsi_replace): Check for same lhs.
(gsi_remove): Insert debug temps.
* tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
(move_computations_stmt): Drop explicit propagation into debug stmts.
(rewrite_bittest): Likewise.  Use gsi_remove for propagation.
* tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
* tree-ssa-sink.c (statement_sink_location): Likewise.
* tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
* tree-ssanames.c (release_ssa_name): Adjust for rename.
* tree-flow.h: Likewise.
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
debug temps without values.
(eliminate_unnecessary_stmts): Don't discard just-inserted
debug stmts.
gcc/testsuite/ChangeLog:
PR debug/41343
PR debug/41447
PR debug/41264
PR debug/41338
* gcc.dg/guality/pr41447-1.c: New.
* gcc.dg/debug/pr41264-1.c: New.
* gcc.dg/debug/pr41343-1.c: New.

Added:
    trunk/gcc/testsuite/gcc.dg/debug/pr41264-1.c
    trunk/gcc/testsuite/gcc.dg/debug/pr41343-1.c
    trunk/gcc/testsuite/gcc.dg/guality/pr41447-1.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cfgexpand.c
    trunk/gcc/cselib.c
    trunk/gcc/emit-rtl.c
    trunk/gcc/gengtype.c
    trunk/gcc/gimple-iterator.c
    trunk/gcc/print-rtl.c
    trunk/gcc/rtl.c
    trunk/gcc/rtl.def
    trunk/gcc/sched-vis.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-dump.c
    trunk/gcc/tree-flow.h
    trunk/gcc/tree-pretty-print.c
    trunk/gcc/tree-ssa-dce.c
    trunk/gcc/tree-ssa-forwprop.c
    trunk/gcc/tree-ssa-loop-im.c
    trunk/gcc/tree-ssa-operands.c
    trunk/gcc/tree-ssa-reassoc.c
    trunk/gcc/tree-ssa-sink.c
    trunk/gcc/tree-ssa.c
    trunk/gcc/tree-ssanames.c
    trunk/gcc/tree.c
    trunk/gcc/tree.def
    trunk/gcc/tree.h
    trunk/gcc/var-tracking.c


-- 


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


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

* [Bug debug/41447] Wrong debug with VTA on temporaries initialized from memory variable
  2009-09-23 13:29 [Bug debug/41447] New: Wrong debug with VTA on temporaries initialized from memory variable jakub at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2009-10-12 18:59 ` aoliva at gcc dot gnu dot org
@ 2009-10-12 20:01 ` aoliva at gcc dot gnu dot org
  2009-10-14  5:02 ` aoliva at gcc dot gnu dot org
  4 siblings, 0 replies; 6+ messages in thread
From: aoliva at gcc dot gnu dot org @ 2009-10-12 20:01 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from aoliva at gcc dot gnu dot org  2009-10-12 20:00 -------
There's nothing stopping optimizers from moving assignments to memory across
debug stmts, but with debug temps we don't move debug stmts across memory
assignments any more, so this testcase is fixed.


-- 

aoliva at gcc dot gnu dot org changed:

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


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


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

* [Bug debug/41447] Wrong debug with VTA on temporaries initialized from memory variable
  2009-09-23 13:29 [Bug debug/41447] New: Wrong debug with VTA on temporaries initialized from memory variable jakub at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2009-10-12 20:01 ` aoliva at gcc dot gnu dot org
@ 2009-10-14  5:02 ` aoliva at gcc dot gnu dot org
  4 siblings, 0 replies; 6+ messages in thread
From: aoliva at gcc dot gnu dot org @ 2009-10-14  5:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from aoliva at gcc dot gnu dot org  2009-10-14 05:01 -------
Subject: Bug 41447

Author: aoliva
Date: Wed Oct 14 05:01:24 2009
New Revision: 152749

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=152749
Log:
PR debug/41343
PR debug/41447
PR debug/41264
PR debug/41338
* tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
decl with rtl.
(tree_code_size): Likewise.

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


-- 


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


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

end of thread, other threads:[~2009-10-14  5:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-23 13:29 [Bug debug/41447] New: Wrong debug with VTA on temporaries initialized from memory variable jakub at gcc dot gnu dot org
2009-09-23 13:55 ` [Bug debug/41447] " rguenth at gcc dot gnu dot org
2009-10-06  4:25 ` aoliva at gcc dot gnu dot org
2009-10-12 18:59 ` aoliva at gcc dot gnu dot org
2009-10-12 20:01 ` aoliva at gcc dot gnu dot org
2009-10-14  5:02 ` aoliva at gcc dot gnu dot 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).