diff options
author | Dodji Seketeli <dodji@redhat.com> | 2012-04-30 11:42:50 +0000 |
---|---|---|
committer | Dodji Seketeli <dodji@gcc.gnu.org> | 2012-04-30 13:42:50 +0200 |
commit | e42d063054571ac6678f5799c3d4fe890ecc9a84 (patch) | |
tree | 47c7277c13e9785e5257a0e7d0c6373cf70ffd13 /libcpp | |
parent | 70dc395a5098e9ae3958e1a317e202358095ed97 (diff) | |
download | gcc-e42d063054571ac6678f5799c3d4fe890ecc9a84.zip gcc-e42d063054571ac6678f5799c3d4fe890ecc9a84.tar.gz gcc-e42d063054571ac6678f5799c3d4fe890ecc9a84.tar.bz2 |
Fix va_arg type location
Now that diagnostics first point to the spelling location of tokens
coming from macro expansion, the test case
gcc/testsuite/g++.old-deja/g++.other/vaarg3.C shows that when I write
va_args (args, some_type), the location that is recorded for
"some_type" is not correct. We wrongly record a location that is in
the system header where the va_args macro is defined.
This patch changes that to correctly record the location for the type
operand of the va_arg expression.
With this patch applied, the
gcc/testsuite/g++.old-deja/g++.other/vaarg3.C test PASSes with and
without -ftrack-macro-expansion.
Tested on x86_64-unknown-linux-gnu against trunk.
Note that the bootstrap with -ftrack-macro-expansion exhibits other
separate issues that are addressed in subsequent patches. This patch
just fixes one class of problems.
The patch does pass bootstrap with -ftrack-macro-expansion turned off,
though.
gcc/cp/
* cp-tree.h (build_x_va_arg): Take an additional location
parameter.
* call.c (build_x_va_arg): Take a loc parameter for the location
of the type of the va_arg expression.
* parser.c (cp_parser_primary_expression): Pass the type of the
type in the va_arg expression to build_x_va_arg.
* pt.c (tsubst_copy): Adjust calls to build_x_va_arg.
From-SVN: r186973
Diffstat (limited to 'libcpp')
0 files changed, 0 insertions, 0 deletions