]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/c-family/c-common.c
re PR c++/55742 (__attribute__ in class function declaration cause "prototype does...
authorJakub Jelinek <jakub@redhat.com>
Wed, 30 Jan 2013 18:04:34 +0000 (19:04 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 30 Jan 2013 18:04:34 +0000 (19:04 +0100)
commit3288746035c8699973d9242284606f1aad2465d2
treedff73a706673434faab62ca52bcda06d693674b2
parent73cca0cc94027192b06c8b7897fe5fbe20de566e
re PR c++/55742 (__attribute__ in class function declaration cause "prototype does not match" errors.)

PR c++/55742
* config/i386/i386.c (ix86_valid_target_attribute_inner_p): Diagnose
invalid args instead of ICEing on it.
(ix86_valid_target_attribute_tree): Return error_mark_node if
ix86_valid_target_attribute_inner_p failed.
(ix86_valid_target_attribute_p): Return false only if
ix86_valid_target_attribute_tree returned error_mark_node.  Allow
target("default") attribute.
(sorted_attr_string): Change argument from const char * to tree,
merge in all target attribute arguments rather than just one.
Formatting fix.  Use XNEWVEC instead of xmalloc and XDELETEVEC
instead of free.  Avoid using strcat.
(ix86_mangle_function_version_assembler_name): Mangle
target("default") as if no target attribute is present.  Adjust
sorted_attr_string caller.  Avoid leaking memory.  Use XNEWVEC
instead of xmalloc and XDELETEVEC instead of free.
(ix86_function_versions): Don't return true if one of the decls
doesn't have target attribute.  If they don't and one of the decls
is DECL_FUNCTION_VERSIONED, report an error.  Adjust
sorted_attr_string caller.  Use XDELETEVEC instead of free.
(ix86_supports_function_versions): Remove.
(make_name): Fix up formatting.
(make_dispatcher_decl): Remove resolver_name and its initialization.
Avoid leaking memory.
(is_function_default_version): Return true if there is
target("default") attribute rather than no target attribute at all.
(make_resolver_func): Avoid leaking memory.
(ix86_generate_version_dispatcher_body): Likewise.
(TARGET_OPTION_SUPPORTS_FUNCTION_VERSIONS): Remove.
* target.def (supports_function_versions): Remove.
* doc/tm.texi.in (SUPPORTS_FUNCTION_VERSIONS): Remove.
* doc/tm.texi: Regenerated.

* c-common.c (handle_target_attribute): Revert 2012-12-26 change.

* g++.dg/mv1.C: Moved to...
* g++.dg/ext/mv1.C: ... here.  Adjust test.
* g++.dg/mv2.C: Moved to...
* g++.dg/ext/mv2.C: ... here.  Adjust test.
* g++.dg/mv3.C: Moved to...
* g++.dg/ext/mv3.C: ... here.
* g++.dg/mv4.C: Moved to...
* g++.dg/ext/mv4.C: ... here.
* g++.dg/mv5.C: Moved to...
* g++.dg/ext/mv5.C: ... here.  Adjust test.
* g++.dg/mv6.C: Moved to...
* g++.dg/ext/mv6.C: ... here.  Adjust test.
* g++.dg/ext/mv7.C: New test.
* g++.dg/ext/mv8.C: New test.
* g++.dg/ext/mv9.C: New test.
* g++.dg/ext/mv10.C: New test.
* g++.dg/ext/mv11.C: New test.

From-SVN: r195584
19 files changed:
gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/config/i386/i386.c
gcc/doc/tm.texi
gcc/doc/tm.texi.in
gcc/target.def
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/mv1.C [moved from gcc/testsuite/g++.dg/mv1.C with 94% similarity]
gcc/testsuite/g++.dg/ext/mv10.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/mv11.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/mv2.C [moved from gcc/testsuite/g++.dg/mv2.C with 96% similarity]
gcc/testsuite/g++.dg/ext/mv3.C [moved from gcc/testsuite/g++.dg/mv3.C with 100% similarity]
gcc/testsuite/g++.dg/ext/mv4.C [moved from gcc/testsuite/g++.dg/mv4.C with 100% similarity]
gcc/testsuite/g++.dg/ext/mv5.C [moved from gcc/testsuite/g++.dg/mv5.C with 88% similarity]
gcc/testsuite/g++.dg/ext/mv6.C [moved from gcc/testsuite/g++.dg/mv6.C with 92% similarity]
gcc/testsuite/g++.dg/ext/mv7.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/mv8.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/mv9.C [new file with mode: 0644]