[llvm-bugs] [Bug 39618] New: clang-cl encodes signed arbitrary precision integers incorrectly.

via llvm-bugs llvm-bugs at lists.llvm.org
Sat Nov 10 10:42:31 PST 2018


            Bug ID: 39618
           Summary: clang-cl encodes signed arbitrary precision integers
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: DebugInfo
          Assignee: unassignedbugs at nondot.org
          Reporter: zturner at google.com
                CC: jdevlieghere at apple.com, llvm-bugs at lists.llvm.org,
                    mosescu at google.com, rnk at google.com

enum SmallSignedEnum : char {
    SSE_A = 0,
    SSE_B = 100,
    SSE_C = -100,

SmallSignedEnum GlobalEnumA = SSE_A;
SmallSignedEnum GlobalEnumB = SSE_B;
SmallSignedEnum GlobalEnumC = SSE_C;

int main(int argc, char **argv) {
  return GlobalEnumA + GlobalEnumB + GlobalEnumC;

Compile with clang-cl and MSVC, and compare the results of dumping the
LF_ENUMERATE field list members.  For SSE_C, with clang-cl llvm-pdbutil outputs

- LF_ENUMERATE [SSE_C = 18446744073709551516]

Whereas with cl, llvm-pdbutil outputs this:


I suspect that clang's version is equivalent to -100 mod 2^64, but we should
really be emitting the exact same byte sequence as cl, and we clearly aren't.

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20181110/f5bc13b3/attachment-0001.html>

More information about the llvm-bugs mailing list