[cfe-commits] r64722 - /cfe/trunk/lib/Headers/tgmath-sofar.h

Chris Lattner sabre at nondot.org
Mon Feb 16 18:30:54 PST 2009


Author: lattner
Date: Mon Feb 16 20:30:54 2009
New Revision: 64722

URL: http://llvm.org/viewvc/llvm-project?rev=64722&view=rev
Log:
hand macro expand this to make "candidate" set printing more useful.  However,
Now no candidates are printed because the 'notes' are in a system header. :(

#include <tgmath-sofar.h>
 double foo2(short *x) {
  return acos(x);
}

t.c:10:10: error: no matching function for call to '__tg_acos'; candidates are:
  return acos(x);
         ^~~~
1 diagnostic generated.


Modified:
    cfe/trunk/lib/Headers/tgmath-sofar.h

Modified: cfe/trunk/lib/Headers/tgmath-sofar.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/tgmath-sofar.h?rev=64722&r1=64721&r2=64722&view=diff

==============================================================================
--- cfe/trunk/lib/Headers/tgmath-sofar.h (original)
+++ cfe/trunk/lib/Headers/tgmath-sofar.h Mon Feb 16 20:30:54 2009
@@ -51,9 +51,24 @@
   __TG_UNARY_OVERLOAD(_Complex double, _Complex double, REALFN, COMPLEXFN)             \
   __TG_UNARY_OVERLOAD(_Complex long double, _Complex long double, REALFN, COMPLEXFN ## l)
 
+#define __TG_ATTRS static __attribute__((overloadable, always_inline))
+
 /* C99 7.22p4, functions in both math.h and complex.h. */
-__TG_RC_1(x, acos, cacos)
+// acos
+__TG_ATTRS float                __tg_acos(float x)                { return  acosf(x); }
+__TG_ATTRS double               __tg_acos(double x)               { return  acos(x); }
+__TG_ATTRS long double          __tg_acos(long double x)          { return  acosl(x); }
+__TG_ATTRS double               __tg_acos(long long x)            { return  acos(x); }
+__TG_ATTRS double               __tg_acos(long x)                 { return  acos(x); }
+__TG_ATTRS double               __tg_acos(int x)                  { return  acos(x); }
+__TG_ATTRS double               __tg_acos(unsigned long long x)   { return  acos(x); }
+__TG_ATTRS double               __tg_acos(unsigned long x)        { return  acos(x); }
+__TG_ATTRS double               __tg_acos(unsigned x)             { return  acos(x); }
+__TG_ATTRS _Complex float       __tg_acos(_Complex float x)       { return cacosf(x); }
+__TG_ATTRS _Complex double      __tg_acos(_Complex double x)      { return cacos(x); }
+__TG_ATTRS _Complex long double __tg_acos(_Complex long double x) { return cacosl(x); }
 #define acos(x) __tg_acos(x)
+
 __TG_RC_1(x, asin, casin)
 #define asin(x) __tg_asin(x)
 





More information about the cfe-commits mailing list