typeck.c (cxx_sizeof_or_alignof_type): Add location_t parameter and use it throughout.
commitd3769410c65a7d3f2d58402c3ecf5c253e340c2e
authorPaolo Carlini <paolo.carlini@oracle.com>
Wed, 18 Dec 2019 19:23:01 +0000 (18 19:23 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 18 Dec 2019 19:23:01 +0000 (18 19:23 +0000)
treeb4db956e077c48a691a959e453a8afb0aa65b4cf
parenta7389ce5d4505a7a3596539ad3a844a850e769d4
typeck.c (cxx_sizeof_or_alignof_type): Add location_t parameter and use it throughout.

/gcc/cp
2019-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

* typeck.c (cxx_sizeof_or_alignof_type): Add location_t parameter
and use it throughout.
(cxx_sizeof_expr): Likewise.
(cxx_alignof_expr): Likewise.
(cxx_sizeof_or_alignof_expr): Likewise.
(cxx_alignas_expr): Update call.
* decl.c (fold_sizeof_expr): Likewise.
* pt.c (tsubst_copy): Likewise.
(tsubst_copy_and_build): Likewise.
* except.c (build_throw): Add location_t parameter and use it.
(expand_end_catch_block): Update call.
* parser.c (cp_parser_unary_expression): Update
cxx_sizeof_or_alignof_type and cxx_sizeof_or_alignof_expr calls,
pass the compound location.
(cp_parser_throw_expression): Likewise pass the combined location
to build_throw.
* cp-tree.h: Update declarations.

* semantics.c (finish_handler_parms): Use DECL_SOURCE_LOCATION.
* decl2.c (check_classfn): Likewise.

* except.c (is_admissible_throw_operand_or_catch_parameter):
Exploit cp_expr_loc_or_input_loc in one place.

* except.c (create_try_catch_expr): Remove, unused.

/libcc1
2019-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

* libcp1plugin.cc (plugin_build_unary_expr): Update build_throw
and cxx_sizeof_or_alignof_expr calls.
(plugin_build_unary_type_expr): Likewise for
cxx_sizeof_or_alignof_type.

/gcc/testsuite
2019-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/diagnostic/alignof2.C: New.
* g++.dg/diagnostic/alignof3.C: Likewise.
* g++.dg/diagnostic/incomplete-type-1.C: Likewise.
* g++.dg/warn/Wcatch-value-3b.C: Likewise.
* g++.dg/cpp0x/alignof3.C: Check location(s) too.
* g++.dg/cpp1z/decomp-bitfield1.C: Likewise.
* g++.dg/cpp1z/has-unique-obj-representations2.C: Likewise.
* g++.dg/expr/sizeof3.C: Likewise.
* g++.dg/ext/flexary6.C: Likewise.
* g++.dg/ext/vla4.C: Likewise.
* g++.dg/template/sizeof11.C: Likewise.
* g++.dg/warn/Wcatch-value-1.C: Likewise.
* g++.dg/warn/Wcatch-value-2.C: Likewise.
* g++.dg/warn/Wcatch-value-3.C: Likewise.
* g++.old-deja/g++.brendan/sizeof1.C: Likewise.
* g++.old-deja/g++.brendan/sizeof3.C: Likewise.
* g++.old-deja/g++.brendan/sizeof4.C: Likewise.
* g++.old-deja/g++.eh/ctor1.C: Likewise.
* g++.old-deja/g++.jason/ambig1.C: Likewise.
* g++.old-deja/g++.other/sizeof4.C: Likewise.

From-SVN: r279543
32 files changed:
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/decl2.c
gcc/cp/except.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/cp/semantics.c
gcc/cp/typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/alignof3.C
gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C
gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations2.C
gcc/testsuite/g++.dg/diagnostic/alignof2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/diagnostic/alignof3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/diagnostic/incomplete-type-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/expr/sizeof3.C
gcc/testsuite/g++.dg/ext/flexary6.C
gcc/testsuite/g++.dg/ext/vla4.C
gcc/testsuite/g++.dg/template/sizeof11.C
gcc/testsuite/g++.dg/warn/Wcatch-value-1.C
gcc/testsuite/g++.dg/warn/Wcatch-value-2.C
gcc/testsuite/g++.dg/warn/Wcatch-value-3.C
gcc/testsuite/g++.dg/warn/Wcatch-value-3b.C [copied from gcc/testsuite/g++.dg/warn/Wcatch-value-3.C with 55% similarity]
gcc/testsuite/g++.old-deja/g++.brendan/sizeof1.C
gcc/testsuite/g++.old-deja/g++.brendan/sizeof3.C
gcc/testsuite/g++.old-deja/g++.brendan/sizeof4.C
gcc/testsuite/g++.old-deja/g++.eh/ctor1.C
gcc/testsuite/g++.old-deja/g++.jason/ambig1.C
gcc/testsuite/g++.old-deja/g++.other/sizeof4.C
libcc1/ChangeLog
libcc1/libcp1plugin.cc