This fixes PR60761 by dumping decl context of function clones
as origin with <clone> appended instead of <built-in> that now
appears after we (compared to 4.8) clear DECL_LANG_SPECIFIC.
Thus for the testcase in PR60761 we now print
t.ii: In function 'void foo(int) <clone>':
t.ii:14:13: warning: iteration 3u invokes undefined behavior
[-Waggressive-loop-optimizations]
z[i] = i;
^
t.ii:13:3: note: containing loop
for (int i = 0; i < s; i++)
^
t.ii:14:8: warning: array subscript is above array bounds [-Warray-bounds]
z[i] = i;
^
instead of
t.ii: In function ‘<built-in>’:
t.ii:14:13: warning: iteration 3u invokes undefined behavior
[-Waggressive-loop-optimizations]
z[i] = i;
^
t.ii:13:3: note: containing loop
for (int i = 0; i < s; i++)
^
t.ii:14:8: warning: array subscript is above array bounds [-Warray-bounds]
z[i] = i;
^
or with 4.8
t.ii: In function ‘void _Z3fooi.constprop.0()’:
t.ii:14:8: warning: array subscript is above array bounds [-Warray-bounds]
z[i] = i;
^
IMHO an improvement over both variants.
Bootstrap and regtest running on x86_64-unknown-linux-gnu.
Honza - does ->former_clone_of apply recursively or do I have to
loop to find the "ultimate" clone-of? Jason, is <clone> good
or shall I use sth else (do we annotate in-charge vs. not in-charge
constructors specially for example?).
Ok?
Thanks,
Richard.
2014-04-08 Richard Biener <[email protected]>
cp/
* error.c: Include cgraph.h
(dump_decl): Print function clones as their origin plus <clone>
appended instead of just <built-in>.
Index: gcc/cp/error.c
===================================================================
*** gcc/cp/error.c (revision 209210)
--- gcc/cp/error.c (working copy)
*************** along with GCC; see the file COPYING3.
*** 34,39 ****
--- 34,40 ----
#include "pointer-set.h"
#include "c-family/c-objc.h"
#include "ubsan.h"
+ #include "cgraph.h"
#include <new> // For placement-new.
*************** dump_decl (cxx_pretty_printer *pp, tree
*** 1145,1151 ****
case FUNCTION_DECL:
if (! DECL_LANG_SPECIFIC (t))
! pp_string (pp, M_("<built-in>"));
else if (DECL_GLOBAL_CTOR_P (t) || DECL_GLOBAL_DTOR_P (t))
dump_global_iord (pp, t);
else
--- 1146,1162 ----
case FUNCTION_DECL:
if (! DECL_LANG_SPECIFIC (t))
! {
! cgraph_node *node;
! if ((node = cgraph_get_node (t))
! && node->former_clone_of)
! {
! dump_decl (pp, node->former_clone_of, flags);
! pp_string (pp, M_(" <clone>"));
! }
! else
! pp_string (pp, M_("<built-in>"));
! }
else if (DECL_GLOBAL_CTOR_P (t) || DECL_GLOBAL_DTOR_P (t))
dump_global_iord (pp, t);
else