diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-06-05 17:35:13 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-06-05 17:35:13 +0200 |
commit | 9f706f23d133a3e4eb5130996461e5cfb2cb706a (patch) | |
tree | 12a9da39bc6bfc83111af358d8b58d60dbbd2f22 /gcc/tree.c | |
parent | 8f439681a9e2e7fa095868097d0e0cc331734957 (diff) | |
download | gcc-9f706f23d133a3e4eb5130996461e5cfb2cb706a.zip gcc-9f706f23d133a3e4eb5130996461e5cfb2cb706a.tar.gz gcc-9f706f23d133a3e4eb5130996461e5cfb2cb706a.tar.bz2 |
re PR middle-end/40340 (Fortification warning no longer emitted in inlines)
PR middle-end/40340
* tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
inlined_function_outer_scope_p blocks for artificial inlines
even at -g0/-g1.
* tree.c (tree_nonartificial_location): Rewrite using
block_nonartificial_location.
* gcc.dg/pr40340-1.c: New test.
* gcc.dg/pr40340-2.c: New test.
* gcc.dg/pr40340-3.c: New test.
* gcc.dg/pr40340-4.c: New test.
* gcc.dg/pr40340-5.c: New test.
* gcc.dg/pr40340.h: New file.
From-SVN: r148212
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 30 |
1 files changed, 5 insertions, 25 deletions
@@ -9224,32 +9224,12 @@ block_nonartificial_location (tree block) location_t tree_nonartificial_location (tree exp) { - tree block = TREE_BLOCK (exp); + location_t *loc = block_nonartificial_location (TREE_BLOCK (exp)); - while (block - && TREE_CODE (block) == BLOCK - && BLOCK_ABSTRACT_ORIGIN (block)) - { - tree ao = BLOCK_ABSTRACT_ORIGIN (block); - - do - { - if (TREE_CODE (ao) == FUNCTION_DECL - && DECL_DECLARED_INLINE_P (ao) - && lookup_attribute ("artificial", DECL_ATTRIBUTES (ao))) - return BLOCK_SOURCE_LOCATION (block); - else if (TREE_CODE (ao) == BLOCK - && BLOCK_SUPERCONTEXT (ao) != ao) - ao = BLOCK_SUPERCONTEXT (ao); - else - break; - } - while (ao); - - block = BLOCK_SUPERCONTEXT (block); - } - - return EXPR_LOCATION (exp); + if (loc) + return *loc; + else + return EXPR_LOCATION (exp); } |