danielkiss added inline comments.
================ Comment at: llvm/lib/IR/AutoUpgrade.cpp:4415-4430 - // Upgrade branch protection and return address signing module flags. The - // module flag behavior for these fields were Error and now they are Min. - if (ID->getString() == "branch-target-enforcement" || - ID->getString().startswith("sign-return-address")) { - if (auto *Behavior = - mdconst::dyn_extract_or_null<ConstantInt>(Op->getOperand(0))) { - if (Behavior->getLimitedValue() == Module::Error) { ---------------- MaskRay wrote: > danielkiss wrote: > > In a full LTO build the linker will complain about the mis match between > > the flags if one of the objects compiled with an older compiler that > > emitted `Module:Error` for these flags. > The new approach doesnot emit a flag for 0 value, so there won't be an error > even with old bitcode files using `Error`. older compiler could emit `Module:Error` with 0 and with this patch we emit 1 with `min` so the linker will stop with `ld.lld: error: linking module flags 'branch-target-enforcement': IDs have conflicting behaviors in 'foo.o' and 'ld-temp.o'` ``` clang++-13 -flto=full -c foo.cpp -o foo.o ../build/bin/clang++ -flto=full -c main.cpp -o main.o -mbranch-protection=standard ../build/bin/clang++ -fuse-ld=lld main.o foo.o -o a.out ``` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D130145/new/ https://reviews.llvm.org/D130145 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits