Index: llvm/lib/IR/AutoUpgrade.cpp =================================================================== --- llvm/lib/IR/AutoUpgrade.cpp +++ llvm/lib/IR/AutoUpgrade.cpp @@ -1567,7 +1567,7 @@ // an ObjC bitcode without this module flag with an ObjC bitcode with this // module flag. if (HasObjCFlag && !HasClassProperties) { - M.addModuleFlag(llvm::Module::Error, "Objective-C Class Properties", + M.addModuleFlag(llvm::Module::Override, "Objective-C Class Properties", (uint32_t)0); return true; } Index: llvm/test/Bitcode/upgrade-module-flag.ll =================================================================== --- llvm/test/Bitcode/upgrade-module-flag.ll +++ llvm/test/Bitcode/upgrade-module-flag.ll @@ -6,4 +6,4 @@ !0 = !{i32 1, !"Objective-C Image Info Version", i32 0} ; CHECK: !0 = !{i32 1, !"Objective-C Image Info Version", i32 0} -; CHECK: !1 = !{i32 1, !"Objective-C Class Properties", i32 0} +; CHECK: !1 = !{i32 4, !"Objective-C Class Properties", i32 0} Index: llvm/test/Linker/Inputs/objectivec-class-property-flag-mismatch.ll =================================================================== --- /dev/null +++ llvm/test/Linker/Inputs/objectivec-class-property-flag-mismatch.ll @@ -0,0 +1,5 @@ + +!llvm.module.flags = !{!0, !1} + +!0 = !{i32 1, !"Objective-C Image Info Version", i32 0} +!1 = !{i32 1, !"Objective-C Class Properties", i32 64} Index: llvm/test/Linker/objectivec-class-property-flag-mismatch.ll =================================================================== --- /dev/null +++ llvm/test/Linker/objectivec-class-property-flag-mismatch.ll @@ -0,0 +1,16 @@ +; RUN: llvm-as < %s -o %t1.bc +; RUN: llvm-as < %p/Inputs/objectivec-class-property-flag-mismatch.ll -o %t2.bc + + +; RUN: llvm-link %t1.bc %t2.bc -S | FileCheck %s +; RUN: llvm-link %t2.bc %t1.bc -S | FileCheck %s + + +; CHECK: !0 = !{i32 1, !"Objective-C Image Info Version", i32 0} +; CHECK: !1 = !{i32 4, !"Objective-C Class Properties", i32 0} + + + +!llvm.module.flags = !{!0} + +!0 = !{i32 1, !"Objective-C Image Info Version", i32 0}