From 5f0fc6da46bd7ac978c9d78ae09bead2811bad37 Mon Sep 17 00:00:00 2001 From: Alex Lorenz Date: Thu, 18 Jun 2015 20:57:41 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240054 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/MIRYamlMapping.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/llvm/CodeGen/MIRYamlMapping.h b/include/llvm/CodeGen/MIRYamlMapping.h index c7489ba8bfd..9f5dbb701ba 100644 --- a/include/llvm/CodeGen/MIRYamlMapping.h +++ b/include/llvm/CodeGen/MIRYamlMapping.h @@ -29,6 +29,12 @@ struct MachineFunction { unsigned Alignment; bool ExposesReturnsTwice; bool HasInlineAsm; + + MachineFunction() { + Alignment = 0; + ExposesReturnsTwice = false; + HasInlineAsm = false; + } }; template <> struct MappingTraits {