[cfe-commits] r58008 - /cfe/trunk/lib/Sema/SemaDecl.cpp
Argiris Kirtzidis
akyrtzi at gmail.com
Thu Oct 23 08:37:13 PDT 2008
Douglas Gregor wrote:
>
> <tgmath.h> is a C99 header that has several "type-generic" macros in
> it, which are versions of common C standard library functions (acos,
> atan, exp, etc.) whose type is the same as their input type, e.g.,
> acos(float) is a float, acos(double) is a double, etc. Now, you can't
> actually implement <tgmath.h> in C99, so one tends to use some kind of
> builtins. However, one possible implementation is to have a little
> incantation that allows C++ overloading in C, and to implement
> tgmath.h using C++ overloading. I'd like to keep that possibility open.
FYI, what triggered my commit was that C redeclarations getting
OverloadedFunctionDecls interfered with this code:
> // If C++, determine whether NewFD is an overload of PrevDecl or
> // a declaration that requires merging. If it's an overload,
> // there's no more work to do here; we'll just add the new
> // function to the scope.
> OverloadedFunctionDecl::function_iterator MatchedDecl;
> if (!getLangOptions().CPlusPlus ||
> !IsOverload(NewFD, PrevDecl, MatchedDecl)) {
> Decl *OldDecl = PrevDecl;
>
> // If PrevDecl was an overloaded function, extract the
> // FunctionDecl that matched.
> if (isa<OverloadedFunctionDecl>(PrevDecl))
> OldDecl = *MatchedDecl; #1
and at #1 MatchedDecl was getting used uninstantiated.
If OverloadedFunctionDecls start being lazily created, the part of the
code that creates them will probably move out from PushOnScopeChains, so
it doesn't seem a big deal.
-Argiris
More information about the cfe-commits
mailing list