Commit 220d905f by Aldy Hernandez Committed by Aldy Hernandez

re PR debug/58123 (debug line not tracked for last autovariable dtor)

	PR debug/58123
	* gimplify.c (gimplify_expr): Prefer location of TRY_FINALLY_EXPR
	over input_location.

From-SVN: r220886
parent e1f217ad
2015-02-20 Aldy Hernandez <aldyh@redhat.com>
PR debug/58123
* gimplify.c (gimplify_expr): Prefer location of TRY_FINALLY_EXPR
over input_location.
2015-02-20 Bernd Schmidt <bernds@codesourcery.com>
* tree-streamer-in.c (unpack_ts_decl_common_value_fields,
......
......@@ -8244,10 +8244,10 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
TREE_CODE (*expr_p) == TRY_FINALLY_EXPR
? GIMPLE_TRY_FINALLY
: GIMPLE_TRY_CATCH);
if (LOCATION_LOCUS (saved_location) != UNKNOWN_LOCATION)
gimple_set_location (try_, saved_location);
else
if (EXPR_HAS_LOCATION (save_expr))
gimple_set_location (try_, EXPR_LOCATION (save_expr));
else if (LOCATION_LOCUS (saved_location) != UNKNOWN_LOCATION)
gimple_set_location (try_, saved_location);
if (TREE_CODE (*expr_p) == TRY_CATCH_EXPR)
gimple_try_set_catch_is_cleanup (try_,
TRY_CATCH_IS_CLEANUP (*expr_p));
......
2015-02-20 Aldy Hernandez <aldyh@redhat.com>
PR debug/58123
* g++.dg/debug/dwarf2/deallocator.C: Adjust for correct try
location.
* g++.dg/gcov/gcov-2.C: Likewise.
2015-02-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/65136
......
......@@ -41,6 +41,6 @@ void foo(int i)
return;
}
// { dg-final { scan-assembler "deallocator.C:29" } }
// { dg-final { scan-assembler "deallocator.C:31" } }
// { dg-final { scan-assembler "deallocator.C:38" } }
// { dg-final { scan-assembler "deallocator.C:41" } }
// { dg-final { scan-assembler "deallocator.C:24" } }
// { dg-final { scan-assembler "deallocator.C:34" } }
// { dg-final { scan-assembler "deallocator.C:21" } }
......@@ -20,7 +20,7 @@ private:
void foo()
{
C c; /* count(1) */
C c; /* count(2) */
c.seti (1); /* count(1) */
}
......
// { dg-do compile }
// { dg-options "-fdump-tree-gimple-lineno" }
// Test that the TRY block's location is the definition of "C a".
class C {
public:
C() {}
~C() {}
int m() { return 0; }
};
int main() {
C a;
return a.m();
}
// { dg-final { scan-tree-dump-times "pr58123.C:13\.6\] try" 1 "gimple" } }
// { dg-final { cleanup-tree-dump "gimple" } }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment