This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Bug in coerce_template_parms


Did anybody notice problems in template parameter resolution?
There seems to be a problem in coerce_template_parms, exposed e.g.
by ttp26.C. Around line 1896, it checks whether the arglist is
a vector. If it isn't, it treats it as a list.

Now, there is another check whether nargs==nparms. In ttp26.C, this is
not the case because there are default parameters.  So the check
fails, but the arguments are still passed as a vector. This goes
unnoticed, as the code retrieves the argument using TREE_VALUE, which
happens to be the right offset. I'm sure one can construct examples
where the code breaks, though.

I found this by putting an assertion into TREE_VALUE that the node
really is a TREE_LIST. I don't have a test case for this specific
code. If nobody can reproduce the problem, I can try to find one.  For
ttp26.C, the problem manifests in the 20th invocation of
coerce_template_parms.

Thanks,
Martin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]