[llvm] r240054 - MIR Serialization: initialize the fields without the default initializers in yaml::MachineFunction

Alex Lorenz arphaman at gmail.com
Thu Jun 18 13:57:41 PDT 2015


Author: arphaman
Date: Thu Jun 18 15:57:41 2015
New Revision: 240054

URL: http://llvm.org/viewvc/llvm-project?rev=240054&view=rev
Log:
MIR Serialization: initialize the fields without the default initializers in yaml::MachineFunction

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. 

Modified:
    llvm/trunk/include/llvm/CodeGen/MIRYamlMapping.h

Modified: llvm/trunk/include/llvm/CodeGen/MIRYamlMapping.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MIRYamlMapping.h?rev=240054&r1=240053&r2=240054&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/MIRYamlMapping.h (original)
+++ llvm/trunk/include/llvm/CodeGen/MIRYamlMapping.h Thu Jun 18 15:57:41 2015
@@ -29,6 +29,12 @@ struct MachineFunction {
   unsigned Alignment;
   bool ExposesReturnsTwice;
   bool HasInlineAsm;
+
+  MachineFunction() {
+    Alignment = 0;
+    ExposesReturnsTwice = false;
+    HasInlineAsm = false;
+  }
 };
 
 template <> struct MappingTraits<MachineFunction> {





More information about the llvm-commits mailing list