mangle.c (write_expression): Mangle dependent name as source-name.
* mangle.c (write_expression): Mangle dependent name as source-name. From-SVN: r145364
This commit is contained in:
parent
d236ace7cb
commit
a3c4975267
5 changed files with 30 additions and 10 deletions
|
@ -1,4 +1,7 @@
|
|||
2009-03-30 Jason Merrill <jason@redhat.com>
|
||||
2009-03-31 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* mangle.c (write_expression): Mangle dependent name as
|
||||
source-name.
|
||||
|
||||
PR c++/38030, 38850, 39070
|
||||
* pt.c (type_dependent_expression_p_push): New fn.
|
||||
|
|
|
@ -2159,12 +2159,6 @@ write_expression (tree expr)
|
|||
code = TREE_CODE (expr);
|
||||
}
|
||||
|
||||
if (code == OVERLOAD)
|
||||
{
|
||||
expr = OVL_FUNCTION (expr);
|
||||
code = TREE_CODE (expr);
|
||||
}
|
||||
|
||||
/* Handle pointers-to-members by making them look like expression
|
||||
nodes. */
|
||||
if (code == PTRMEM_CST)
|
||||
|
@ -2344,7 +2338,25 @@ write_expression (tree expr)
|
|||
switch (code)
|
||||
{
|
||||
case CALL_EXPR:
|
||||
write_expression (CALL_EXPR_FN (expr));
|
||||
{
|
||||
tree fn = CALL_EXPR_FN (expr);
|
||||
|
||||
if (TREE_CODE (fn) == ADDR_EXPR)
|
||||
fn = TREE_OPERAND (fn, 0);
|
||||
|
||||
/* Mangle a dependent name as the name, not whatever happens to
|
||||
be the first function in the overload set. */
|
||||
if ((TREE_CODE (fn) == FUNCTION_DECL
|
||||
|| TREE_CODE (fn) == OVERLOAD)
|
||||
&& type_dependent_expression_p_push (expr))
|
||||
fn = DECL_NAME (get_first_fn (fn));
|
||||
|
||||
if (TREE_CODE (fn) == IDENTIFIER_NODE)
|
||||
write_source_name (fn);
|
||||
else
|
||||
write_expression (fn);
|
||||
}
|
||||
|
||||
for (i = 0; i < call_expr_nargs (expr); ++i)
|
||||
write_expression (CALL_EXPR_ARG (expr, i));
|
||||
write_char ('E');
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2009-03-31 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* g++.dg/cpp0x/auto6.C: Adjust expected mangling.
|
||||
* g++.dg/cpp0x/auto12.C: Likewise.
|
||||
|
||||
2009-03-31 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/31029
|
||||
|
|
|
@ -58,6 +58,6 @@ int main()
|
|||
A<int>().h(1);
|
||||
// { dg-final { scan-assembler "_ZN1AIiE1jIiEEDTplfp_clL_Z1xvEEET_" } }
|
||||
A<int>().j(1);
|
||||
// { dg-final { scan-assembler "_Z1gIIidEEDTclL_Z1fEspplfp_Li1EEEDpT_" } }
|
||||
// { dg-final { scan-assembler "_Z1gIIidEEDTcl1fspplfp_Li1EEEDpT_" } }
|
||||
g(42, 1.0);
|
||||
}
|
||||
|
|
|
@ -101,7 +101,7 @@ int main()
|
|||
auto i4 = add4(1, 2.0);
|
||||
// { dg-final { scan-assembler "_Z4add2IidEDTplcvT__EcvT0__EES0_S1_" } }
|
||||
auto i2 = add2(1, 2.0);
|
||||
// { dg-final { scan-assembler "_Z4add3IidEDTclL_Z2agEfp_fp0_EET_T0_" } }
|
||||
// { dg-final { scan-assembler "_Z4add3IidEDTcl2agfp_fp0_EET_T0_" } }
|
||||
auto i3 = add3(1, 2.0);
|
||||
// { dg-final { scan-assembler "_Z1fI1AIiEEDTclptfp_1fEEPT_" } }
|
||||
f(p);
|
||||
|
|
Loading…
Add table
Reference in a new issue