diff options
author | Jan Hubicka <jh@suse.cz> | 2009-03-01 12:05:00 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2009-03-01 11:05:00 +0000 |
commit | a3aadcc56b098c6475836ad61e82e057275684cf (patch) | |
tree | 366a59d3cc39917816f5e2e383390b2f84bbf41c /gcc | |
parent | 1cf5abb382f9dab7203ae6a8d9f2f4421190d1ff (diff) | |
download | gcc-a3aadcc56b098c6475836ad61e82e057275684cf.zip gcc-a3aadcc56b098c6475836ad61e82e057275684cf.tar.gz gcc-a3aadcc56b098c6475836ad61e82e057275684cf.tar.bz2 |
* tree-inline.c (tree_function_versioning): Output debug info.
From-SVN: r144516
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c | 30 | ||||
-rw-r--r-- | gcc/tree-inline.c | 6 |
4 files changed, 44 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dba3b12..1561808 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2009-02-28 Jan Hubicka <jh@suse.cz> + * tree-inline.c (tree_function_versioning): Output debug info. + +2009-02-28 Jan Hubicka <jh@suse.cz> + PR debug/39267 * tree-inline.c (setup_one_parameter): Do not copy propagate arguments when not optimizing. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c6b8017..b1afa60 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2009-03-01 Jan Hubicka <jh@suse.cz> + * gcc.dg/debug/dwarf2/ipa-cp1.c: New testcase. + +2009-03-01 Jan Hubicka <jh@suse.cz> + PR debug/39267 * gcc.dg/debug/dwarf2/inline1.c: New testcase. diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c b/gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c new file mode 100644 index 0000000..7442dab --- /dev/null +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/ipa-cp1.c @@ -0,0 +1,30 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -gdwarf-2 -dA" } */ +void q(int p); +static void +t(int constant_propagated_par) +{ + int local_var = constant_propagated_par + 1; + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); + q(local_var); +} +main() +{ + t(5); + t(5); + t(5); + t(5); + t(5); + t(5); + t(5); +} +/* { dg-final { scan-assembler "local_var" } } */ diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 65d5b88..8ff784a 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -4226,6 +4226,12 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, old_version_node = cgraph_node (old_decl); new_version_node = cgraph_node (new_decl); + /* Output the inlining info for this abstract function, since it has been + inlined. If we don't do this now, we can lose the information about the + variables in the function when the blocks get blown away as soon as we + remove the cgraph node. */ + (*debug_hooks->outlining_inline_function) (old_decl); + DECL_ARTIFICIAL (new_decl) = 1; DECL_ABSTRACT_ORIGIN (new_decl) = DECL_ORIGIN (old_decl); |