<div>On Mon, Apr 1, 2013 at 12:42 PM, YunZhong Gao <span dir="ltr"><<a href="mailto:gaoyunzhong@gmail.com" target="_blank">gaoyunzhong@gmail.com</a>></span> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  static_assert does not seem to work with C programs<br></blockquote><div><br></div><div>That's why I said to use _Static_assert. :-)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  and tgmath does not seem to work with C++ programs.<br>
<br>
  Using an array declaration works as Richard described, and<br>
  I update my patch accordingly.<br></blockquote><div><br></div><div>Thanks, committed in r181527, with s/static_check/_Static_assert/, and with the test disabled for freestanding implementations (<tgmath.h> includes <math.h> -- this is still relying on system headers more than I'd like, but that seems hard to avoid).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<a href="http://llvm-reviews.chandlerc.com/D595" target="_blank">http://llvm-reviews.chandlerc.com/D595</a><br>
<br>
CHANGE SINCE LAST DIFF<br>
  <a href="http://llvm-reviews.chandlerc.com/D595?vs=1447&id=1470#toc" target="_blank">http://llvm-reviews.chandlerc.com/D595?vs=1447&id=1470#toc</a><br>
<div><div class="h5"><br>
Files:<br>
  lib/Headers/tgmath.h<br>
  test/Headers/tgmath.c<br>
<br>
Index: lib/Headers/tgmath.h<br>
===================================================================<br>
--- lib/Headers/tgmath.h<br>
+++ lib/Headers/tgmath.h<br>
@@ -1340,15 +1340,15 @@<br>
<br>
 // creal<br>
<br>
-static float _Complex<br>
+static float<br>
     _TG_ATTRS<br>
     __tg_creal(float __x) {return __x;}<br>
<br>
-static double _Complex<br>
+static double<br>
     _TG_ATTRS<br>
     __tg_creal(double __x) {return __x;}<br>
<br>
-static long double _Complex<br>
+static long double<br>
     _TG_ATTRS<br>
     __tg_creal(long double __x) {return __x;}<br>
<br>
Index: test/Headers/tgmath.c<br>
===================================================================<br>
--- test/Headers/tgmath.c<br>
+++ test/Headers/tgmath.c<br>
</div></div>@@ -0,0 +1,39 @@<br>
+// RUN: %clang -fsyntax-only %s<br>
+<br>
+#include <tgmath.h><br>
+<br>
+#define static_check(x) extern char dummy_array[(x) ? 1 : -1]<br>
+<br>
+float f;<br>
+double d;<br>
+long double l;<br>
+<br>
+float complex fc;<br>
+double complex dc;<br>
+long double complex lc;<br>
+<br>
+// creal<br>
+<br>
+static_check(sizeof(creal(f)) == sizeof(f));<br>
+static_check(sizeof(creal(d)) == sizeof(d));<br>
+static_check(sizeof(creal(l)) == sizeof(l));<br>
+<br>
+static_check(sizeof(creal(fc)) == sizeof(f));<br>
+static_check(sizeof(creal(dc)) == sizeof(d));<br>
+static_check(sizeof(creal(lc)) == sizeof(l));<br>
+<br>
+// fabs<br>
+<br>
+static_check(sizeof(fabs(f)) == sizeof(f));<br>
+static_check(sizeof(fabs(d)) == sizeof(d));<br>
+static_check(sizeof(fabs(l)) == sizeof(l));<br>
+<br>
+static_check(sizeof(fabs(fc)) == sizeof(f));<br>
+static_check(sizeof(fabs(dc)) == sizeof(d));<br>
+static_check(sizeof(fabs(lc)) == sizeof(l));<br>
+<br>
+// logb<br>
+<br>
+static_check(sizeof(logb(f)) == sizeof(f));<br>
+static_check(sizeof(logb(d)) == sizeof(d));<br>
+static_check(sizeof(logb(l)) == sizeof(l));<br>
</blockquote></div><br>