<div dir="ltr">... and I had to disable the test for -m32 in r209517 <div>because there are bots that don't work with -m32: </div><div><a href="http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-centos-6.5/builds/5151/steps/test/logs/stdio">http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-centos-6.5/builds/5151/steps/test/logs/stdio</a><br>
</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, May 23, 2014 at 6:55 PM, Kostya Serebryany <span dir="ltr"><<a href="mailto:kcc@google.com" target="_blank">kcc@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote"><div><div class="h5">On Thu, May 22, 2014 at 9:39 PM, Marek Polacek <span dir="ltr"><<a href="mailto:polacek@redhat.com" target="_blank">polacek@redhat.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi!<br>
<br>
I'm trying to implement -fsanitize=float-cast-overflow support to GCC.<br>
One of the issues is that libubsan doesn't handle 96-bit floating-point<br>
types, so e.g. on<br>
<br>
int<br>
main ()<br>
{<br>
  volatile long double ld = 300.0;<br>
  char c = ld;<br>
  return 0;<br>
}<br>
<br>
with -m32 we hit<br>
==27463==Sanitizer CHECK failed: /builddir/build/BUILD/llvm-3.4/projects/compiler-rt/lib/ubsan/ubsan_value.cc:100 ((0 && "unexpected floating point bit width")) != (0) (0, 0)<br>
<br>
The same for __float80 types in -m32 mode (but since clang doesn't<br>
support __float{80,128} types, this is not so relevant for you I guess).<br>
Fix is simple:<br>
<br>
diff --git a/libsanitizer/ubsan/ubsan_value.cc b/libsanitizer/ubsan/ubsan_value.cc<br>
index 141e8b5..e2f664d 100644<br>
--- a/libsanitizer/ubsan/ubsan_value.cc<br>
+++ b/libsanitizer/ubsan/ubsan_value.cc<br>
@@ -92,6 +92,7 @@ FloatMax Value::getFloatValue() const {<br>
     switch (getType().getFloatBitWidth()) {<br>
     case 64: return *reinterpret_cast<double*>(Val);<br>
     case 80: return *reinterpret_cast<long double*>(Val);<br>
+    case 96: return *reinterpret_cast<long double*>(Val);<br>
     case 128: return *reinterpret_cast<long double*>(Val);<br>
     }<br>
   }<br></blockquote><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Could someone please review & commit this one?<br></blockquote><div><br></div></div></div><div>Thanks! Committed with a tests and and another related fix: </div><div><a href="http://llvm.org/viewvc/llvm-project?view=revision&revision=209516" target="_blank">http://llvm.org/viewvc/llvm-project?view=revision&revision=209516</a><br>

</div><div><br></div><div>Alexey, Nick, do we want to have in ubsan the same lit magic as in asan that runs all the tests in both 32-bit and 64-bit? </div><div>Currently the ubsan tests seem to be running only in one bit-ness. </div>
<div class="">
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Another issue is printing of __float128 and _Decimal{32,64,128} types;<br>
libubsan doesn't handle such types, so currently there's no way how<br>
to print them.  Unfortunately, I don't think the solution is as simple<br>
as adding e.g. TK_Decimal/TK_Float_Extended constants, because<br>
libstdc++ I think doesn't have the routines to convert such values to<br>
strings, and adding extra library dependencies to e.g. libdecnumber<br>
doesn't sound viable.  But for these rather obscure types we can use<br>
TK_Unknown - and just print "<unknown>".  I'd guess that DFP types<br>
are rare anyway and I'm fine with keeping it this way.<br>
<br>
Thanks.<br>
<br>
        Marek<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div><br></div></div>
</blockquote></div><br></div>