mirror of git://gcc.gnu.org/git/gcc.git
mangle.c (write_type): Handle 'auto'.
gcc/cp/ * mangle.c (write_type): Handle 'auto'. * init.c (build_new): Don't do auto deduction where it might affect template mangling. libiberty/ * cp-demangle.c (cplus_demangle_type): Handle 'auto'. From-SVN: r185595
This commit is contained in:
parent
f17dd5dad3
commit
c19267cbaf
|
|
@ -1,5 +1,9 @@
|
||||||
2012-03-20 Jason Merrill <jason@redhat.com>
|
2012-03-20 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
* mangle.c (write_type): Handle 'auto'.
|
||||||
|
* init.c (build_new): Don't do auto deduction where it might
|
||||||
|
affect template mangling.
|
||||||
|
|
||||||
PR c++/52510
|
PR c++/52510
|
||||||
* decl.c (reshape_init_class): Handle repeated reshaping.
|
* decl.c (reshape_init_class): Handle repeated reshaping.
|
||||||
* search.c (lookup_field_1): Add sanity check.
|
* search.c (lookup_field_1): Add sanity check.
|
||||||
|
|
|
||||||
|
|
@ -2774,7 +2774,9 @@ build_new (VEC(tree,gc) **placement, tree type, tree nelts,
|
||||||
if (type == error_mark_node)
|
if (type == error_mark_node)
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
|
|
||||||
if (nelts == NULL_TREE && VEC_length (tree, *init) == 1)
|
if (nelts == NULL_TREE && VEC_length (tree, *init) == 1
|
||||||
|
/* Don't do auto deduction where it might affect mangling. */
|
||||||
|
&& (!processing_template_decl || at_function_scope_p ()))
|
||||||
{
|
{
|
||||||
tree auto_node = type_uses_auto (type);
|
tree auto_node = type_uses_auto (type);
|
||||||
if (auto_node)
|
if (auto_node)
|
||||||
|
|
|
||||||
|
|
@ -1933,6 +1933,13 @@ write_type (tree type)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TEMPLATE_TYPE_PARM:
|
case TEMPLATE_TYPE_PARM:
|
||||||
|
if (is_auto (type))
|
||||||
|
{
|
||||||
|
write_identifier ("Da");
|
||||||
|
++is_builtin_type;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/* else fall through. */
|
||||||
case TEMPLATE_PARM_INDEX:
|
case TEMPLATE_PARM_INDEX:
|
||||||
write_template_param (type);
|
write_template_param (type);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
2012-03-20 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
* g++.dg/cpp0x/auto32.C: New.
|
||||||
|
|
||||||
2012-03-20 Georg-Johann Lay <avr@gjlay.de>
|
2012-03-20 Georg-Johann Lay <avr@gjlay.de>
|
||||||
|
|
||||||
PR testsuite/52641
|
PR testsuite/52641
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
// { dg-do compile { target c++11 } }
|
||||||
|
|
||||||
|
// { dg-final { scan-assembler "_Z1fIiEDTnw_Dapifp_EET_" } }
|
||||||
|
template <class T> auto f(T t) -> decltype (new auto(t));
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
f(1);
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
2012-03-20 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
* cp-demangle.c (cplus_demangle_type): Handle 'auto'.
|
||||||
|
|
||||||
2012-03-07 Jason Merrill <jason@redhat.com>
|
2012-03-07 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
* cp-demangle.c (cplus_demangle_operators): Add li.
|
* cp-demangle.c (cplus_demangle_operators): Add li.
|
||||||
|
|
|
||||||
|
|
@ -2270,6 +2270,11 @@ cplus_demangle_type (struct d_info *di)
|
||||||
cplus_demangle_type (di), NULL);
|
cplus_demangle_type (di), NULL);
|
||||||
can_subst = 1;
|
can_subst = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'a':
|
||||||
|
/* auto */
|
||||||
|
ret = d_make_name (di, "auto", 4);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'f':
|
case 'f':
|
||||||
/* 32-bit decimal floating point */
|
/* 32-bit decimal floating point */
|
||||||
|
|
|
||||||
|
|
@ -4075,6 +4075,12 @@ decltype (new int{}) f1<int>(int)
|
||||||
--format=gnu-v3
|
--format=gnu-v3
|
||||||
_Zli2_wPKc
|
_Zli2_wPKc
|
||||||
operator"" _w(char const*)
|
operator"" _w(char const*)
|
||||||
|
--format=gnu-v3
|
||||||
|
_Z1fIiEDTnw_Dapifp_EET_
|
||||||
|
decltype (new auto({parm#1})) f<int>(int)
|
||||||
|
--format=gnu-v3
|
||||||
|
_Z1fIiERDaRKT_S1_
|
||||||
|
auto& f<int>(int const&, int)
|
||||||
#
|
#
|
||||||
# Ada (GNAT) tests.
|
# Ada (GNAT) tests.
|
||||||
#
|
#
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue