]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: Harden *_PACK_EXPANSION and *_ARGUMENT_PACK macros
authorPatrick Palka <ppalka@redhat.com>
Tue, 10 May 2022 15:52:21 +0000 (11:52 -0400)
committerPatrick Palka <ppalka@redhat.com>
Tue, 10 May 2022 15:52:21 +0000 (11:52 -0400)
commitdc6c96f0707aba6c2c94f41f3ccd0713381e372c
treebf4d7b5524538bbfdc05d989c77e5efa06677b7c
parentca97c87758d450a946cac31b0db43da0039fabf1
c++: Harden *_PACK_EXPANSION and *_ARGUMENT_PACK macros

This makes the accessor macros for TYPE_/EXPR_PACK_EXPANSION
and TYPE_/NONTYPE_ARGUMENT_PACK check the tree code of the argument.

gcc/cp/ChangeLog:

* cp-tree.h (PACK_EXPANSION_CHECK): Define.
(PACK_EXPANSION_PATTERN): Use PACK_EXPANSION_CHECK.
(SET_PACK_EXPANSION_PATTERN): Likewise.
(PACK_EXPANSION_PARAMETER_PACKS): Likewise.
(PACK_EXPANSION_EXTRA_ARGS): Likewise.
(PACK_EXPANSION_LOCAL_P): Likewise.
(PACK_EXPANSION_SIZEOF_P): Likewise.
(PACK_EXPANSION_AUTO_P): Likewise.
(PACK_EXPANSION_FORCE_EXTRA_ARGS_P): Likewise.
(ARGUMENT_PACK_CHECK): Define.
(ARGUMENT_PACK_ARGS): Use ARGUMENT_PACK_CHECK.
(SET_ARGUMENT_PACK_ARGS): Likewise.
* parser.cc (cp_parser_sizeof_pack): Check for error_mark_node
before setting PACK_EXPANSION_SIZEOF_P.
gcc/cp/cp-tree.h
gcc/cp/parser.cc