PR c++/87541 - ICE using a constant decl as an attribute alloc_size argument
authorMartin Sebor <msebor@redhat.com>
Thu, 15 Nov 2018 22:53:57 +0000 (22:53 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Thu, 15 Nov 2018 22:53:57 +0000 (15:53 -0700)
commit1d24950977c730f5e955060057b1dd0b5c051adb
treeaecd56593f283b79ac0939bd57a5555c6b93239f
parentcd5da9837b26d77136d3a9394747ce4325a95118
PR c++/87541 - ICE using a constant decl as an attribute alloc_size argument

PR c++/87541 - ICE using a constant decl as an attribute alloc_size argument
PR c++/87542 - bogus error on attribute format with a named constant argument

gcc/ChangeLog:

PR c++/87541
PR c++/87542
* tree.c (type_argument_type): New function.
* tree.h (type_argument_type): Declare it.
* gcc/doc/extend.texi (alloc_align): Update and clarify.
(alloc_size, nonnull, sentinel): Same.

gcc/c-family/ChangeLog:

PR c++/87541
PR c++/87542
* c-attribs.c (positional_argument): New function.
(handle_alloc_size_attribute): Use it and simplify.
(handle_alloc_align_attribute): Same.
(handle_assume_aligned_attribute): Same.
(handle_nonnull_attribute): Same.
* c-common.c (check_function_arguments): Pass fntype to
check_function_format.
* c-common.h (check_function_format): Add an argument.
(PosArgFlags, positional_argument): Declare new type and function.
* c-format.c (decode_format_attr): Add arguments.
(check_format_string, get_constant): Same.
(convert_format_name_to_system_name): Adjust.

gcc/testsuite/ChangeLog:

PR c++/87541
PR c++/87542
* g++.dg/ext/attr-alloc_size.C: New test.
* c-c++-common/pr71574.c: Adjust diagnostics.
* c-c++-common/attributes-1.c: Same.
* gcc.dg/attr-alloc_align-2.c: Same.
* gcc.dg/attr-alloc_align-4.c: New test.
* gcc.dg/attr-alloc_size-2.c: Adjust diagnostics.
* gcc.dg/attr-alloc_size.c: Same.
* gcc.dg/attr-assume_aligned-4.c: New test.
* gcc.dg/format/attr-3.c: Adjust diagnostics.
* gcc.dg/nonnull-2.c: Same.
* gcc.dg/torture/pr80612.c: Same.
* obj-c++.dg/attributes/method-format-1.mm: Same.
* obj-c++.dg/attributes/method-nonnull-1.mm: Same.
* objc.dg/attributes/method-format-1.m: same.
* objc.dg/attributes/method-nonnull-1.m: Same.

From-SVN: r266195
26 files changed:
gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-attribs.c
gcc/c-family/c-common.c
gcc/c-family/c-common.h
gcc/c-family/c-format.c
gcc/doc/extend.texi
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/attributes-1.c
gcc/testsuite/c-c++-common/pr71574.c
gcc/testsuite/g++.dg/ext/attr-alloc_size.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/attr-alloc_align-2.c
gcc/testsuite/gcc.dg/attr-alloc_align-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/attr-alloc_size-12.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/attr-alloc_size-2.c
gcc/testsuite/gcc.dg/attr-alloc_size.c
gcc/testsuite/gcc.dg/attr-assume_aligned-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/format/attr-3.c
gcc/testsuite/gcc.dg/nonnull-2.c
gcc/testsuite/gcc.dg/torture/pr80612.c
gcc/testsuite/obj-c++.dg/attributes/method-format-1.mm
gcc/testsuite/obj-c++.dg/attributes/method-nonnull-1.mm
gcc/testsuite/objc.dg/attributes/method-format-1.m
gcc/testsuite/objc.dg/attributes/method-nonnull-1.m
gcc/tree.c
gcc/tree.h