[prev in list] [next in list] [prev in thread] [next in thread]
List: gcc-bugs
Subject: [Bug middle-end/40867] [4.5 Regression] FAIL: StackTrace2 output - source compiled test
From: "rguenther at suse dot de" <gcc-bugzilla () gcc ! gnu ! org>
Date: 2009-07-31 9:19:29
Message-ID: 20090731091929.30202.qmail () sourceware ! org
[Download RAW message or body]
------- Comment #7 from rguenther at suse dot de 2009-07-31 09:19 -------
Subject: Re: [4.5 Regression] FAIL: StackTrace2 output
- source compiled test
On Thu, 30 Jul 2009, aph at gcc dot gnu dot org wrote:
> ------- Comment #6 from aph at gcc dot gnu dot org 2009-07-30 17:24 -------
> This seems to be happening very early, because the very first tree dump shows:
>
> StackTrace2$Inner.doCrash(java.lang.Object) (struct StackTrace2$Inner * this,
> struct java.lang.Object * o)
> [StackTrace2.java : 0:0] {
> struct java.lang.Object * #ref#2#2.146;
> struct
> {
> struct java.lang.Class * class;
> void * methods[2];
> } * D.1837;
> void * * D.1838;
> void * D.1839;
> struct java.lang.String * java.lang.Object::<Tb5> (struct java.lang.Object *)
> * D.1840;
>
> [StackTrace2.java : 34:0] {
> void * #ref#1#0;
> struct java.lang.Object * D.252;
> void * #ref#2#2;
>
> [StackTrace2.java : 33:0] D.252 = o;
> [StackTrace2.java : 34:0] #ref#2#2 = D.252;
> [StackTrace2.java : 34:0] #ref#2#2.146 = (struct java.lang.Object *)
> #ref#2#2;
> [StackTrace2.java : 34:0] D.1837 = #ref#2#2.146->vtable;
> [StackTrace2.java : 34:0] D.1838 = &D.1837->methods[4];
> ...
>
> All this code should be marked as Line 33, not line 34. I don't know
> why this has changed recently.
Could it be now that all the java_replace_references is done at
a different time we fail to properly update / copy locations in
that function? I don't see that it changed really, and nothing
uses locators there before or after the patch, but ... certainly
the MODIFY_EXPR doesn't get its location copied from the original
one.
So, maybe the following would make a difference? (untested)
Index: decl.c
===================================================================
--- decl.c (revision 150221)
+++ decl.c (working copy)
@@ -361,9 +361,10 @@ java_replace_references (tree *tp, int *
tree new_lhs = java_replace_reference (lhs, /* want_lvalue */
true);
tree new_rhs = build1 (NOP_EXPR, TREE_TYPE (new_lhs),
TREE_OPERAND (*tp, 1));
- *tp = build2 (MODIFY_EXPR, TREE_TYPE (new_lhs),
- new_lhs, new_rhs);
- *tp = build1 (NOP_EXPR, TREE_TYPE (lhs), *tp);
+ tree tem = build2 (MODIFY_EXPR, TREE_TYPE (new_lhs),
+ new_lhs, new_rhs);
+ SET_EXPR_LOCATION (tem, EXPR_LOCATION (*tp));
+ *tp = build1 (NOP_EXPR, TREE_TYPE (lhs), tem);
}
}
if (TREE_CODE (*tp) == VAR_DECL)
Richard.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40867
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic