https://github.com/aganea updated https://github.com/llvm/llvm-project/pull/102681
>From 16efda65bb3d30b67b3215d7e8d69a105e2d771c Mon Sep 17 00:00:00 2001 From: Alexandre Ganea <aga...@havenstudios.com> Date: Fri, 9 Aug 2024 16:32:09 -0400 Subject: [PATCH 1/2] [Clang][CodeGen] Fix a bad codegen when building Clang with latest MSVC --- clang/lib/CodeGen/CGObjCGNU.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/lib/CodeGen/CGObjCGNU.cpp b/clang/lib/CodeGen/CGObjCGNU.cpp index 948b10954ebbed..56a3ed1b87b35f 100644 --- a/clang/lib/CodeGen/CGObjCGNU.cpp +++ b/clang/lib/CodeGen/CGObjCGNU.cpp @@ -2092,10 +2092,10 @@ class CGObjCGNUstep2 : public CGObjCGNUstep { auto *classStart = llvm::StructType::get(PtrTy, PtrTy, PtrTy, LongTy, LongTy); auto &astContext = CGM.getContext(); - auto flags = Builder.CreateLoad( - Address{Builder.CreateStructGEP(classStart, selfValue, 4), LongTy, - CharUnits::fromQuantity( - astContext.getTypeAlign(astContext.UnsignedLongTy))}); + llvm::Value *Val = Builder.CreateStructGEP(classStart, selfValue, 4); + auto Align = CharUnits::fromQuantity( + astContext.getTypeAlign(astContext.UnsignedLongTy)); + auto flags = Builder.CreateLoad(Address{Val, LongTy, Align}); auto isInitialized = Builder.CreateAnd(flags, ClassFlags::ClassFlagInitialized); llvm::BasicBlock *notInitializedBlock = >From 34b84af7a41cab1eab1e0ed046e656bbaa783fdc Mon Sep 17 00:00:00 2001 From: Alexandre Ganea <aga...@havenstudios.com> Date: Sat, 10 Aug 2024 16:16:22 -0400 Subject: [PATCH 2/2] Add comment --- clang/lib/CodeGen/CGObjCGNU.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/clang/lib/CodeGen/CGObjCGNU.cpp b/clang/lib/CodeGen/CGObjCGNU.cpp index 56a3ed1b87b35f..ca5804018227ea 100644 --- a/clang/lib/CodeGen/CGObjCGNU.cpp +++ b/clang/lib/CodeGen/CGObjCGNU.cpp @@ -2092,6 +2092,11 @@ class CGObjCGNUstep2 : public CGObjCGNUstep { auto *classStart = llvm::StructType::get(PtrTy, PtrTy, PtrTy, LongTy, LongTy); auto &astContext = CGM.getContext(); + // FIXME: The following few lines up to and including the call to + // `CreateLoad` were known to miscompile when MSVC 19.40.33813 is used + // to build Clang. When the bug is fixed in future MSVC releases, we + // should revert these lines to their previous state. See discussion in + // https://github.com/llvm/llvm-project/pull/102681 llvm::Value *Val = Builder.CreateStructGEP(classStart, selfValue, 4); auto Align = CharUnits::fromQuantity( astContext.getTypeAlign(astContext.UnsignedLongTy)); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits