diff options
author | Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> | 2003-11-05 14:37:57 +0000 |
---|---|---|
committer | Kriang Lerdsuwanakij <lerdsuwa@gcc.gnu.org> | 2003-11-05 14:37:57 +0000 |
commit | aad626f71c5a3a3eac7e2946fa1e89655c271bbb (patch) | |
tree | c906160dc60d35db419bbaeb00ce3395ccf46717 | |
parent | 437a91e66436c2093bcf0f816eff9ea23ab09cf4 (diff) | |
download | gcc-aad626f71c5a3a3eac7e2946fa1e89655c271bbb.zip gcc-aad626f71c5a3a3eac7e2946fa1e89655c271bbb.tar.gz gcc-aad626f71c5a3a3eac7e2946fa1e89655c271bbb.tar.bz2 |
re PR c++/11616 (Error message "instantiated from here" gives wrong location)
PR c++/11616
* pt.c (instantiate_pending_templates): Save and restore
input_location.
* g++.dg/template/instantiate5.C: New test.
From-SVN: r73269
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/instantiate5.C | 24 |
4 files changed, 37 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c2eae49..a9656c1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,11 @@ 2003-11-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + PR c++/11616 + * pt.c (instantiate_pending_templates): Save and restore + input_location. + +2003-11-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + PR c++/2019 * friend.c (add_friend): Don't display previous declaration in case of duplicate friend warning. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 600d240..e464af3 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -11037,6 +11037,7 @@ instantiate_pending_templates (void) tree last = NULL_TREE; int instantiated_something = 0; int reconsider; + location_t saved_loc = input_location; do { @@ -11111,6 +11112,7 @@ instantiate_pending_templates (void) } while (reconsider); + input_location = saved_loc; return instantiated_something; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 25f756a..bbff7c5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-11-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + PR c++/11616 + * g++.dg/template/instantiate5.C: New test. + 2003-11-03 Volker Reichelt <reichelt@igpm.rwth-aachen.de> PR c++/12726 diff --git a/gcc/testsuite/g++.dg/template/instantiate5.C b/gcc/testsuite/g++.dg/template/instantiate5.C new file mode 100644 index 0000000..8d07635 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/instantiate5.C @@ -0,0 +1,24 @@ +// { dg-do compile } + +// Origin: Volker Reichelt <reichelt@gcc.gnu.org> + +// PR c++/11616: Incorrect line number in diagnostics + +template <int> struct A +{ + static const int i=0; +}; + +int baz() { return A<0>::i; } + +struct B +{ + static void foo (int); // { dg-error "candidates" } +}; + +template <typename T> struct C +{ + virtual void bar() const { T::foo(); } // { dg-error "no matching function" } +}; + +C<B> c; // { dg-error "instantiated" } |