public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics
@ 2013-02-18 16:05 pl.smith.mail at gmail dot com
  2013-02-18 16:12 ` [Bug c++/56377] " pl.smith.mail at gmail dot com
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: pl.smith.mail at gmail dot com @ 2013-02-18 16:05 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

             Bug #: 56377
           Summary: [4.8 Regression] <missing> template args in
                    substitution-failure diagnostics
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: pl.smith.mail@gmail.com


When a candidate function for which substituion failed is listed in a
diagnostic, if the failure stems from a template parameter that have an
explicit argument, the explicit arguments are listed as <missing>.

For example:

template <typename T>
typename T::type f();

int main () {
  f<int>();
}

Produces (4.8, no flags):

test.cpp: In function ג€˜int main()ג€™:
test.cpp:5:10: error: no matching function for call to 'f()'
   f<int>();
          ^
test.cpp:5:10: note: candidate is:
test.cpp:2:18: note: template<class T> typename T::type f()
 typename T::type f();
                  ^
test.cpp:2:18: note:   template argument deduction/substitution failed:
  *************
test.cpp: In substitution of 'template<class T> typename T::type f() [with T =
<missing>]':
  *************
test.cpp:5:10:   required from here
test.cpp:2:18: error: 'int' is not a class, struct, or union type

In 4.7 it is "[with T = int]".


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
@ 2013-02-18 16:12 ` pl.smith.mail at gmail dot com
  2013-02-18 16:16 ` paolo.carlini at oracle dot com
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: pl.smith.mail at gmail dot com @ 2013-02-18 16:12 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

--- Comment #1 from Paul Smith <pl.smith.mail at gmail dot com> 2013-02-18 16:12:00 UTC ---
Looks like this was introduced in rev. 190664, with the merging of
'deduction_tsubst_fntype' into 'fn_type_unification'.

The instantiation context is constructed with 'targs' as the vector of template
arguments, which is still empty when substituting the explicit arguments into
the function type the first time. This can be fixed by either constructing the
instantiation context using 'explicit_targs' when non-null, or by copying
'explicit_targs' into 'targs' before the substitution.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
  2013-02-18 16:12 ` [Bug c++/56377] " pl.smith.mail at gmail dot com
@ 2013-02-18 16:16 ` paolo.carlini at oracle dot com
  2013-02-19  9:33 ` rguenth at gcc dot gnu.org
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: paolo.carlini at oracle dot com @ 2013-02-18 16:16 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

Paolo Carlini <paolo.carlini at oracle dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2013-02-18
                 CC|                            |jason at gcc dot gnu.org
     Ever Confirmed|0                           |1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
  2013-02-18 16:12 ` [Bug c++/56377] " pl.smith.mail at gmail dot com
  2013-02-18 16:16 ` paolo.carlini at oracle dot com
@ 2013-02-19  9:33 ` rguenth at gcc dot gnu.org
  2013-02-19  9:58 ` jakub at gcc dot gnu.org
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-02-19  9:33 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |4.8.0


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
                   ` (2 preceding siblings ...)
  2013-02-19  9:33 ` rguenth at gcc dot gnu.org
@ 2013-02-19  9:58 ` jakub at gcc dot gnu.org
  2013-02-20 14:52 ` rguenth at gcc dot gnu.org
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-02-19  9:58 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-02-19 09:58:16 UTC ---
Yeah, diff between r190663 and r190664 output is:
-pr56377.C: In substitution of ‘template<class T> typename T::type f() [with T
= int]’:
+pr56377.C: In substitution of ‘template<class T> typename T::type f() [with T
= <missing>]’:


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
                   ` (3 preceding siblings ...)
  2013-02-19  9:58 ` jakub at gcc dot gnu.org
@ 2013-02-20 14:52 ` rguenth at gcc dot gnu.org
  2013-02-22 15:58 ` jason at gcc dot gnu.org
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-02-20 14:52 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |diagnostic
           Priority|P3                          |P1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
                   ` (4 preceding siblings ...)
  2013-02-20 14:52 ` rguenth at gcc dot gnu.org
@ 2013-02-22 15:58 ` jason at gcc dot gnu.org
  2013-02-22 22:25 ` jason at gcc dot gnu.org
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jason at gcc dot gnu.org @ 2013-02-22 15:58 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

Jason Merrill <jason at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
         AssignedTo|unassigned at gcc dot       |jason at gcc dot gnu.org
                   |gnu.org                     |


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
                   ` (5 preceding siblings ...)
  2013-02-22 15:58 ` jason at gcc dot gnu.org
@ 2013-02-22 22:25 ` jason at gcc dot gnu.org
  2013-02-23  1:59 ` jason at gcc dot gnu.org
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jason at gcc dot gnu.org @ 2013-02-22 22:25 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

--- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> 2013-02-22 22:24:40 UTC ---
Author: jason
Date: Fri Feb 22 22:24:27 2013
New Revision: 196230

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=196230
Log:
    PR c++/56377
    * pt.c (fn_type_unification): Use explicit args in template
    instantiation context.

Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/pt.c


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
                   ` (6 preceding siblings ...)
  2013-02-22 22:25 ` jason at gcc dot gnu.org
@ 2013-02-23  1:59 ` jason at gcc dot gnu.org
  2013-02-23 15:16 ` pl.smith.mail at gmail dot com
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: jason at gcc dot gnu.org @ 2013-02-23  1:59 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

Jason Merrill <jason at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> 2013-02-23 01:59:20 UTC ---
Fixed.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
                   ` (7 preceding siblings ...)
  2013-02-23  1:59 ` jason at gcc dot gnu.org
@ 2013-02-23 15:16 ` pl.smith.mail at gmail dot com
  2013-02-26  4:28 ` jason at gcc dot gnu.org
  2013-02-26  4:29 ` jason at gcc dot gnu.org
  10 siblings, 0 replies; 12+ messages in thread
From: pl.smith.mail at gmail dot com @ 2013-02-23 15:16 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

Paul Smith <pl.smith.mail at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |

--- Comment #5 from Paul Smith <pl.smith.mail at gmail dot com> 2013-02-23 15:15:47 UTC ---
There can still be <missing> arguments before the substitution:

template <int N>
void f() {
  f<N + 1>();
}

int main() {
  f<0>();
}

Output:

test.cpp:3:11: error: template instantiation depth exceeds maximum of 900 (use
-ftemplate-depth= to increase the maximum) substituting ‘template<int N> void
f() [with int N = <missing>]’
  f<N + 1>();
           ^
...


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
                   ` (8 preceding siblings ...)
  2013-02-23 15:16 ` pl.smith.mail at gmail dot com
@ 2013-02-26  4:28 ` jason at gcc dot gnu.org
  2013-02-26  4:29 ` jason at gcc dot gnu.org
  10 siblings, 0 replies; 12+ messages in thread
From: jason at gcc dot gnu.org @ 2013-02-26  4:28 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

--- Comment #6 from Jason Merrill <jason at gcc dot gnu.org> 2013-02-26 04:28:04 UTC ---
Author: jason
Date: Tue Feb 26 04:27:51 2013
New Revision: 196275

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=196275
Log:
    PR c++/56377
    * pt.c (fn_type_unification): Wait to call push_tinst_level until
    we know what args we're looking at.

Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/pt.c


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug c++/56377] [4.8 Regression] <missing> template args in substitution-failure diagnostics
  2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
                   ` (9 preceding siblings ...)
  2013-02-26  4:28 ` jason at gcc dot gnu.org
@ 2013-02-26  4:29 ` jason at gcc dot gnu.org
  10 siblings, 0 replies; 12+ messages in thread
From: jason at gcc dot gnu.org @ 2013-02-26  4:29 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56377

Jason Merrill <jason at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #7 from Jason Merrill <jason at gcc dot gnu.org> 2013-02-26 04:29:17 UTC ---
Should really be fixed now.


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2013-02-26  4:29 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-18 16:05 [Bug c++/56377] New: [4.8 Regression] <missing> template args in substitution-failure diagnostics pl.smith.mail at gmail dot com
2013-02-18 16:12 ` [Bug c++/56377] " pl.smith.mail at gmail dot com
2013-02-18 16:16 ` paolo.carlini at oracle dot com
2013-02-19  9:33 ` rguenth at gcc dot gnu.org
2013-02-19  9:58 ` jakub at gcc dot gnu.org
2013-02-20 14:52 ` rguenth at gcc dot gnu.org
2013-02-22 15:58 ` jason at gcc dot gnu.org
2013-02-22 22:25 ` jason at gcc dot gnu.org
2013-02-23  1:59 ` jason at gcc dot gnu.org
2013-02-23 15:16 ` pl.smith.mail at gmail dot com
2013-02-26  4:28 ` jason at gcc dot gnu.org
2013-02-26  4:29 ` jason at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).