]> granicus.if.org Git - llvm/commitdiff
[codeview] respect signedness of APSInts when printing to YAML
authorBob Haarman <llvm@inglorion.net>
Wed, 21 Jun 2017 22:31:52 +0000 (22:31 +0000)
committerBob Haarman <llvm@inglorion.net>
Wed, 21 Jun 2017 22:31:52 +0000 (22:31 +0000)
Summary:
This fixes a bug where we always treat APSInts in Codeview as
signed when writing them to YAML. One symptom of this problem is that
llvm-pdbdump raw would show Enumerator Values that differ between the
original PDB and a PDB that has been round-tripped through YAML.

Reviewers: zturner

Reviewed By: zturner

Subscribers: llvm-commits, fhahn

Differential Revision: https://reviews.llvm.org/D34013

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305965 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ObjectYAML/CodeViewYAMLTypes.cpp
test/DebugInfo/PDB/pdbdump-yaml-types.test

index a03b9cd50faa222c9118eb19684ec7cacaf6e4b9..2d1cb4b1b27b9c642a8ce5409dc9faaf246d6b05 100644 (file)
@@ -138,7 +138,7 @@ StringRef ScalarTraits<TypeIndex>::input(StringRef Scalar, void *Ctx,
 
 void ScalarTraits<APSInt>::output(const APSInt &S, void *,
                                   llvm::raw_ostream &OS) {
-  S.print(OS, true);
+  S.print(OS, S.isSigned());
 }
 
 StringRef ScalarTraits<APSInt>::input(StringRef Scalar, void *Ctx, APSInt &S) {
index a01edcee1e99cbf21c1b42c790951038d9c2e104..493ff3791981b25f66ac36f88241ac8536a1c251 100644 (file)
@@ -785,7 +785,7 @@ YAML:             Name:            eIDLModuleUsage
 YAML:         - Kind:            LF_ENUMERATE
 YAML:           Enumerator:      
 YAML:             Attrs:           3
-YAML:             Value:           -32768
+YAML:             Value:           32768
 YAML:             Name:            eAnonymousUsage
 YAML:         - Kind:            LF_ENUMERATE
 YAML:           Enumerator: