aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2012-04-30 11:42:50 +0000
committerDodji Seketeli <dodji@gcc.gnu.org>2012-04-30 13:42:50 +0200
commite42d063054571ac6678f5799c3d4fe890ecc9a84 (patch)
tree47c7277c13e9785e5257a0e7d0c6373cf70ffd13 /libcpp
parent70dc395a5098e9ae3958e1a317e202358095ed97 (diff)
downloadgcc-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