This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/54796] New: [4.8 Regression] Non-addressable stack parameter debug quality regression
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 03 Oct 2012 15:29:39 +0000
- Subject: [Bug debug/54796] New: [4.8 Regression] Non-addressable stack parameter debug quality regression
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54796
Bug #: 54796
Summary: [4.8 Regression] Non-addressable stack parameter debug
quality regression
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: debug
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: jakub@gcc.gnu.org
CC: aoliva@gcc.gnu.org
Target: i686-linux
/* PR debug/NNNNN */
/* { dg-do run } */
/* { dg-options "-g" } */
__attribute__((noinline, noclone)) void
bar (char *a, int b)
{
__asm volatile ("" : "+r" (a), "+r" (b) : : "memory");
}
__attribute__((noinline, noclone)) void
foo (int a, int b)
{
int c = a;
char d[b];/* { dg-final { gdb-test 17 "a" "5" } } */
bar (d, 2);/* { dg-final { gdb-test 17 "b" "6" } } */
bar (d, 4);/* { dg-final { gdb-test 17 "c" "5" } } */
}
int
main ()
{
foo (5, 6);
return 0;
}
(line 17 is the second call to bar) regressed for -m32 -Os -g on
{i686,x86_64}-linux supposedly with the
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188871
change. I've mentioned this already in
http://gcc.gnu.org/ml/gcc-patches/2012-10/msg00262.html
but filing it now on a testcase that is not dependent on any GCC patches.
The problem is that vt_canon_true_dep/canon_true_dependence doesn't figure out
that the stack stores (after prologue where hard fp is initialized) can't alias
argp. Without the VLA or other reasons forcing use of frame pointer
var-tracking replaces sp accesses with argp + offset accesses and
canon_true_dependence then disambiguates it using the offsets.