MIR Serialization: initialize the fields without the default initializers in yaml...
authorAlex Lorenz <arphaman@gmail.com>
Thu, 18 Jun 2015 20:57:41 +0000 (20:57 +0000)
committerAlex Lorenz <arphaman@gmail.com>
Thu, 18 Jun 2015 20:57:41 +0000 (20:57 +0000)
My commit r239790 which introduced serialization for simple machine function attributes didn't
initialize them when parsing because I have misread the documentation for YAML IO's mapOptional
method. The mapOptional method doesn't actually set the values to the values returned by the
default constructor for that type when the key value pair is missing, it just doesn't modify
those values, so they still contain the value that was set during initialization by the default
constructor. But the fields in yaml::MachineFunction with types like unsigned and bool are not
initialized by default, and thus they can still be uninitialized after mapOptional during parsing.
This commit adds default initialization for those fields to prevent this.

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

include/llvm/CodeGen/MIRYamlMapping.h

index c7489ba8bfd7979251a781f8323428132ed4b1f3..9f5dbb701badad1c14ebb83b8487821852a661ed 100644 (file)
@@ -29,6 +29,12 @@ struct MachineFunction {
   unsigned Alignment;
   bool ExposesReturnsTwice;
   bool HasInlineAsm;
+
+  MachineFunction() {
+    Alignment = 0;
+    ExposesReturnsTwice = false;
+    HasInlineAsm = false;
+  }
 };
 
 template <> struct MappingTraits<MachineFunction> {