In lib/Target/X86/X86COFFMachineModuleInfo.h we have: class X86MachineFunctionInfo; ... class X86COFFMachineModuleInfo : public MachineModuleInfoImpl { ... typedef std::map<const Function*, X86MachineFunctionInfo> FMFInfoMap; FMFInfoMap FunctionInfoMap; ... }; At this point in the translation unit X86MachineFunctionInfo is an incomplete type, yet it is being used to instantiate std::map. This is undefined behavior in C++03 (and C++0X) according to: 17.4.3.6 - Other functions [lib.res.on.functions], p2, b5 Unfortunately I am not familiar enough with this code to recommend a fix. However I do know that this will create portability problems with llvm. X86MachineFunctionInfo must not be incomplete at the point it is used to instantiate std::map. -Howard