http://llvm.org/bugs/show_bug.cgi?id=15054

             Bug #: 15054
           Summary: 32bit Build always write's snan
           Product: clang
           Version: 3.2
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected], [email protected]
    Classification: Unclassified


Have a problem that signaling nan's are always written when built with -m32.
Test case (original here: https://gist.github.com/0c340629e451ff31ef66)


#include <limits>
#include <cstdio>
#include <cstring>

int main()
{
  union {
    unsigned char b[sizeof(double)];
    double d;
    float f;
  } u;
  memset(&u, 0, sizeof(u));
  u.f = std::numeric_limits<float>::signaling_NaN(); //__builtin_nansf("");
  printf("%02x %02x %02x %02x %02x %02x %02x %02x\n",
         u.b[0], u.b[1], u.b[2], u.b[3],
         u.b[4], u.b[5], u.b[6], u.b[7]);
  u.f = std::numeric_limits<float>::quiet_NaN(); //__builtin_nanf("");
  printf("%02x %02x %02x %02x %02x %02x %02x %02x\n",
         u.b[0], u.b[1], u.b[2], u.b[3],
         u.b[4], u.b[5], u.b[6], u.b[7]);
  u.d = std::numeric_limits<double>::signaling_NaN(); //__builtin_nans("");
  printf("%02x %02x %02x %02x %02x %02x %02x %02x\n",
         u.b[0], u.b[1], u.b[2], u.b[3],
         u.b[4], u.b[5], u.b[6], u.b[7]);
  u.d = std::numeric_limits<double>::quiet_NaN(); //__builtin_nan("");
  printf("%02x %02x %02x %02x %02x %02x %02x %02x\n",
         u.b[0], u.b[1], u.b[2], u.b[3],
         u.b[4], u.b[5], u.b[6], u.b[7]);
}


$ for CXX in clang++ g++; do for M in 32 64; do $CXX -m$M -o tmp/snan-$CXX$M
tmp/snan.cc; echo "*** $CXX $M bits"; tmp/snan-$CXX$M; done; done
*** clang++ 32 bits
00 00 c0 ff 00 00 00 00
00 00 c0 ff 00 00 00 00
00 00 00 00 00 00 f8 ff
00 00 00 00 00 00 f8 ff
*** clang++ 64 bits
00 00 a0 7f 00 00 00 00
00 00 c0 7f 00 00 00 00
00 00 00 00 00 00 f4 7f
00 00 00 00 00 00 f8 7f
*** g++ 32 bits
00 00 e0 7f 00 00 00 00
00 00 c0 7f 00 00 00 00
00 00 00 00 00 00 fc 7f
00 00 00 00 00 00 f8 7f
*** g++ 64 bits
00 00 a0 7f 00 00 00 00
00 00 c0 7f 00 00 00 00
00 00 00 00 00 00 f4 7f
00 00 00 00 00 00 f8 7f

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to