[PATCH] D83176: [OpenMPIRBuilder][Fix] Move llvm::omp::types to OpenMPIRBuilder.

2020-07-08 Thread Stefan Stipanovic via Phabricator via cfe-commits
This revision was not accepted when it landed; it landed in state "Needs 
Review".
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6aab27ba851f: [OpenMPIRBuilder][Fix] Move llvm::omp::types 
to OpenMPIRBuilder. (authored by sstefan1).

Changed prior to commit:
  https://reviews.llvm.org/D83176?vs=275549=275711#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83176/new/

https://reviews.llvm.org/D83176

Files:
  clang/lib/CodeGen/CGDecl.cpp
  clang/lib/CodeGen/CGExpr.cpp
  clang/lib/CodeGen/CGOpenMPRuntime.cpp
  clang/lib/CodeGen/CGOpenMPRuntime.h
  clang/lib/CodeGen/CGStmtOpenMP.cpp
  clang/lib/CodeGen/CodeGenFunction.cpp
  clang/lib/CodeGen/CodeGenModule.cpp
  clang/lib/CodeGen/CodeGenModule.h
  llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
  llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
  llvm/lib/Frontend/OpenMP/OMPConstants.cpp
  llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
  llvm/lib/Transforms/IPO/OpenMPOpt.cpp
  llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp

Index: llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
===
--- llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+++ llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
@@ -19,7 +19,6 @@
 
 using namespace llvm;
 using namespace omp;
-using namespace types;
 
 namespace {
 
@@ -50,7 +49,6 @@
   void TearDown() override {
 BB = nullptr;
 M.reset();
-uninitializeTypes();
   }
 
   LLVMContext Ctx;
Index: llvm/lib/Transforms/IPO/OpenMPOpt.cpp
===
--- llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+++ llvm/lib/Transforms/IPO/OpenMPOpt.cpp
@@ -29,7 +29,6 @@
 
 using namespace llvm;
 using namespace omp;
-using namespace types;
 
 #define DEBUG_TYPE "openmp-opt"
 
@@ -263,11 +262,11 @@
   ICV.InitValue = nullptr; \
   break;   \
 case ICV_ZERO: \
-  ICV.InitValue =  \
-  ConstantInt::get(Type::getInt32Ty(Int32->getContext()), 0);  \
+  ICV.InitValue = ConstantInt::get(\
+  Type::getInt32Ty(OMPBuilder.Int32->getContext()), 0);\
   break;   \
 case ICV_FALSE:\
-  ICV.InitValue = ConstantInt::getFalse(Int1->getContext());   \
+  ICV.InitValue = ConstantInt::getFalse(OMPBuilder.Int1->getContext());\
   break;   \
 case ICV_LAST: \
   break;   \
@@ -332,16 +331,39 @@
 
 Module  = *((*ModuleSlice.begin())->getParent());
 
+// Helper macros for handling __VA_ARGS__ in OMP_RTL
+#define OMP_TYPE(VarName, ...) \
+  Type *VarName = OMPBuilder.VarName;  \
+  (void)VarName;
+
+#define OMP_ARRAY_TYPE(VarName, ...)   \
+  ArrayType *VarName##Ty = OMPBuilder.VarName##Ty; \
+  (void)VarName##Ty;   \
+  PointerType *VarName##PtrTy = OMPBuilder.VarName##PtrTy; \
+  (void)VarName##PtrTy;
+
+#define OMP_FUNCTION_TYPE(VarName, ...)\
+  FunctionType *VarName = OMPBuilder.VarName;  \
+  (void)VarName;   \
+  PointerType *VarName##Ptr = OMPBuilder.VarName##Ptr; \
+  (void)VarName##Ptr;
+
+#define OMP_STRUCT_TYPE(VarName, ...)  \
+  StructType *VarName = OMPBuilder.VarName;\
+  (void)VarName;   \
+  PointerType *VarName##Ptr = OMPBuilder.VarName##Ptr; \
+  (void)VarName##Ptr;
+
 #define OMP_RTL(_Enum, _Name, _IsVarArg, _ReturnType, ...) \
   {\
 SmallVector ArgsTypes({__VA_ARGS__});   \
 Function *F = M.getFunction(_Name);\
-if (declMatchesRTFTypes(F, _ReturnType, ArgsTypes)) {  \
+if (declMatchesRTFTypes(F, OMPBuilder._ReturnType, ArgsTypes)) {   \
   auto  = RFIs[_Enum]; \
   

[PATCH] D83176: [OpenMPIRBuilder][Fix] Move llvm::omp::types to OpenMPIRBuilder.

2020-07-08 Thread Stefan Stipanovic via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6aab27ba851f: [OpenMPIRBuilder][Fix] Move llvm::omp::types 
to OpenMPIRBuilder. (authored by sstefan1).

Changed prior to commit:
  https://reviews.llvm.org/D83176?vs=275549=276445#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83176/new/

https://reviews.llvm.org/D83176

Files:
  clang/lib/CodeGen/CGDecl.cpp
  clang/lib/CodeGen/CGExpr.cpp
  clang/lib/CodeGen/CGOpenMPRuntime.cpp
  clang/lib/CodeGen/CGOpenMPRuntime.h
  clang/lib/CodeGen/CGStmtOpenMP.cpp
  clang/lib/CodeGen/CodeGenFunction.cpp
  clang/lib/CodeGen/CodeGenModule.cpp
  clang/lib/CodeGen/CodeGenModule.h
  llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
  llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
  llvm/lib/Frontend/OpenMP/OMPConstants.cpp
  llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
  llvm/lib/Transforms/IPO/OpenMPOpt.cpp
  llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp

Index: llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
===
--- llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+++ llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
@@ -19,7 +19,6 @@
 
 using namespace llvm;
 using namespace omp;
-using namespace types;
 
 namespace {
 
@@ -50,7 +49,6 @@
   void TearDown() override {
 BB = nullptr;
 M.reset();
-uninitializeTypes();
   }
 
   LLVMContext Ctx;
Index: llvm/lib/Transforms/IPO/OpenMPOpt.cpp
===
--- llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+++ llvm/lib/Transforms/IPO/OpenMPOpt.cpp
@@ -29,7 +29,6 @@
 
 using namespace llvm;
 using namespace omp;
-using namespace types;
 
 #define DEBUG_TYPE "openmp-opt"
 
@@ -263,11 +262,11 @@
   ICV.InitValue = nullptr; \
   break;   \
 case ICV_ZERO: \
-  ICV.InitValue =  \
-  ConstantInt::get(Type::getInt32Ty(Int32->getContext()), 0);  \
+  ICV.InitValue = ConstantInt::get(\
+  Type::getInt32Ty(OMPBuilder.Int32->getContext()), 0);\
   break;   \
 case ICV_FALSE:\
-  ICV.InitValue = ConstantInt::getFalse(Int1->getContext());   \
+  ICV.InitValue = ConstantInt::getFalse(OMPBuilder.Int1->getContext());\
   break;   \
 case ICV_LAST: \
   break;   \
@@ -332,16 +331,39 @@
 
 Module  = *((*ModuleSlice.begin())->getParent());
 
+// Helper macros for handling __VA_ARGS__ in OMP_RTL
+#define OMP_TYPE(VarName, ...) \
+  Type *VarName = OMPBuilder.VarName;  \
+  (void)VarName;
+
+#define OMP_ARRAY_TYPE(VarName, ...)   \
+  ArrayType *VarName##Ty = OMPBuilder.VarName##Ty; \
+  (void)VarName##Ty;   \
+  PointerType *VarName##PtrTy = OMPBuilder.VarName##PtrTy; \
+  (void)VarName##PtrTy;
+
+#define OMP_FUNCTION_TYPE(VarName, ...)\
+  FunctionType *VarName = OMPBuilder.VarName;  \
+  (void)VarName;   \
+  PointerType *VarName##Ptr = OMPBuilder.VarName##Ptr; \
+  (void)VarName##Ptr;
+
+#define OMP_STRUCT_TYPE(VarName, ...)  \
+  StructType *VarName = OMPBuilder.VarName;\
+  (void)VarName;   \
+  PointerType *VarName##Ptr = OMPBuilder.VarName##Ptr; \
+  (void)VarName##Ptr;
+
 #define OMP_RTL(_Enum, _Name, _IsVarArg, _ReturnType, ...) \
   {\
 SmallVector ArgsTypes({__VA_ARGS__});   \
 Function *F = M.getFunction(_Name);\
-if (declMatchesRTFTypes(F, _ReturnType, ArgsTypes)) {  \
+if (declMatchesRTFTypes(F, OMPBuilder._ReturnType, ArgsTypes)) {   \
   auto  = RFIs[_Enum]; \
   RFI.Kind = _Enum;\
   RFI.Name 

[PATCH] D83176: [OpenMPIRBuilder][Fix] Move llvm::omp::types to OpenMPIRBuilder.

2020-07-07 Thread Johannes Doerfert via Phabricator via cfe-commits
jdoerfert accepted this revision.
jdoerfert added a comment.
This revision is now accepted and ready to land.

LGTM.




Comment at: llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp:1125
+#include "llvm/Frontend/OpenMP/OMPKinds.def"
+}

While we are here, remove `uninitializeTypes`



Comment at: llvm/lib/Transforms/IPO/OpenMPOpt.cpp:313
   {
\
 SmallVector ArgsTypes({__VA_ARGS__});   
\
 Function *F = M.getFunction(_Name);
\

hoyFB wrote:
> sstefan1 wrote:
> > I wasn't sure how to handle `__VA_ARGS__` here, since we would need 
> > `OMPBuilder` in front of every type. 
> > That is why helper macros above exist. The problem with this is that this 
> > creates some unused variables in `OpenMPOpt`.
> > 
> > Not sure if `-Wno-unused-variable` would be a good thing to do temporarily? 
> > Is there another way to handle `__VA_ARGS__` here?
> Could it be possible to use `OMPBuilder. _Name`, `OMPBuilder. _ReturnType` 
> everywhere?
Since this will (soonish) be replaced by tablegen definitions we can apply the 
following workaround:

Keep your helper macros but add
`(void) VarName;`
after each declaration :) 



Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83176/new/

https://reviews.llvm.org/D83176



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D83176: [OpenMPIRBuilder][Fix] Move llvm::omp::types to OpenMPIRBuilder.

2020-07-05 Thread Hongtao Yu via Phabricator via cfe-commits
hoyFB added a comment.

Thanks for the quick turnaround! I confirm the change fixes our build break.




Comment at: llvm/lib/Transforms/IPO/OpenMPOpt.cpp:313
   {
\
 SmallVector ArgsTypes({__VA_ARGS__});   
\
 Function *F = M.getFunction(_Name);
\

sstefan1 wrote:
> I wasn't sure how to handle `__VA_ARGS__` here, since we would need 
> `OMPBuilder` in front of every type. 
> That is why helper macros above exist. The problem with this is that this 
> creates some unused variables in `OpenMPOpt`.
> 
> Not sure if `-Wno-unused-variable` would be a good thing to do temporarily? 
> Is there another way to handle `__VA_ARGS__` here?
Could it be possible to use `OMPBuilder. _Name`, `OMPBuilder. _ReturnType` 
everywhere?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83176/new/

https://reviews.llvm.org/D83176



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D83176: [OpenMPIRBuilder][Fix] Move llvm::omp::types to OpenMPIRBuilder.

2020-07-05 Thread Stefan Stipanovic via Phabricator via cfe-commits
sstefan1 updated this revision to Diff 275549.
sstefan1 added a comment.

small fix


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83176/new/

https://reviews.llvm.org/D83176

Files:
  clang/lib/CodeGen/CGDecl.cpp
  clang/lib/CodeGen/CGExpr.cpp
  clang/lib/CodeGen/CGOpenMPRuntime.cpp
  clang/lib/CodeGen/CGOpenMPRuntime.h
  clang/lib/CodeGen/CGStmtOpenMP.cpp
  clang/lib/CodeGen/CodeGenFunction.cpp
  clang/lib/CodeGen/CodeGenModule.cpp
  clang/lib/CodeGen/CodeGenModule.h
  llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
  llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
  llvm/lib/Frontend/OpenMP/OMPConstants.cpp
  llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
  llvm/lib/Transforms/IPO/OpenMPOpt.cpp
  llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp

Index: llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
===
--- llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+++ llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
@@ -19,7 +19,6 @@
 
 using namespace llvm;
 using namespace omp;
-using namespace types;
 
 namespace {
 
@@ -50,7 +49,6 @@
   void TearDown() override {
 BB = nullptr;
 M.reset();
-uninitializeTypes();
   }
 
   LLVMContext Ctx;
Index: llvm/lib/Transforms/IPO/OpenMPOpt.cpp
===
--- llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+++ llvm/lib/Transforms/IPO/OpenMPOpt.cpp
@@ -29,7 +29,6 @@
 
 using namespace llvm;
 using namespace omp;
-using namespace types;
 
 #define DEBUG_TYPE "openmp-opt"
 
@@ -224,11 +223,11 @@
   ICV.InitValue = nullptr; \
   break;   \
 case ICV_ZERO: \
-  ICV.InitValue =  \
-  ConstantInt::get(Type::getInt32Ty(Int32->getContext()), 0);  \
+  ICV.InitValue = ConstantInt::get(\
+  Type::getInt32Ty(OMPBuilder.Int32->getContext()), 0);\
   break;   \
 case ICV_FALSE:\
-  ICV.InitValue = ConstantInt::getFalse(Int1->getContext());   \
+  ICV.InitValue = ConstantInt::getFalse(OMPBuilder.Int1->getContext());\
   break;   \
 case ICV_LAST: \
   break;   \
@@ -293,11 +292,26 @@
 
 Module  = *((*ModuleSlice.begin())->getParent());
 
+// Helper macros for handling __VA_ARGS__ in OMP_RTL
+#define OMP_TYPE(VarName, ...) Type *VarName = OMPBuilder.VarName;
+
+#define OMP_ARRAY_TYPE(VarName, ...)   \
+  ArrayType *VarName##Ty = OMPBuilder.VarName##Ty; \
+  PointerType *VarName##PtrTy = OMPBuilder.VarName##PtrTy;
+
+#define OMP_FUNCTION_TYPE(VarName, ...)\
+  FunctionType *VarName = OMPBuilder.VarName;  \
+  PointerType *VarName##Ptr = OMPBuilder.VarName##Ptr;
+
+#define OMP_STRUCT_TYPE(VarName, ...)  \
+  StructType *VarName = OMPBuilder.VarName;\
+  PointerType *VarName##Ptr = OMPBuilder.VarName##Ptr;
+
 #define OMP_RTL(_Enum, _Name, _IsVarArg, _ReturnType, ...) \
   {\
 SmallVector ArgsTypes({__VA_ARGS__});   \
 Function *F = M.getFunction(_Name);\
-if (declMatchesRTFTypes(F, _ReturnType, ArgsTypes)) {  \
+if (declMatchesRTFTypes(F, OMPBuilder._ReturnType, ArgsTypes)) {   \
   auto  = RFIs[_Enum]; \
   RFI.Kind = _Enum;\
   RFI.Name = _Name;\
@@ -553,11 +567,11 @@
"Unexpected replacement value!");
 
 // TODO: Use dominance to find a good position instead.
-auto CanBeMoved = [](CallBase ) {
+auto CanBeMoved = [this](CallBase ) {
   unsigned NumArgs = CB.getNumArgOperands();
   if (NumArgs == 0)
 return true;
-  if (CB.getArgOperand(0)->getType() != IdentPtr)
+  if (CB.getArgOperand(0)->getType() != OMPInfoCache.OMPBuilder.IdentPtr)
 return false;
   for (unsigned u = 1; u < NumArgs; ++u)
 if (isa(CB.getArgOperand(u)))
@@ -592,7 +606,7 @@
 // existing and used by one of the calls, or created 

[PATCH] D83176: [OpenMPIRBuilder][Fix] Move llvm::omp::types to OpenMPIRBuilder.

2020-07-05 Thread Stefan Stipanovic via Phabricator via cfe-commits
sstefan1 marked an inline comment as done.
sstefan1 added a subscriber: hoyFB.
sstefan1 added a comment.

Since this is not a small change, I think it would be good if @hoyFB could test 
if this resolves the issue.

There is one small issue though:




Comment at: llvm/lib/Transforms/IPO/OpenMPOpt.cpp:313
   {
\
 SmallVector ArgsTypes({__VA_ARGS__});   
\
 Function *F = M.getFunction(_Name);
\

I wasn't sure how to handle `__VA_ARGS__` here, since we would need 
`OMPBuilder` in front of every type. 
That is why helper macros above exist. The problem with this is that this 
creates some unused variables in `OpenMPOpt`.

Not sure if `-Wno-unused-variable` would be a good thing to do temporarily? Is 
there another way to handle `__VA_ARGS__` here?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83176/new/

https://reviews.llvm.org/D83176



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D83176: [OpenMPIRBuilder][Fix] Move llvm::omp::types to OpenMPIRBuilder.

2020-07-05 Thread Stefan Stipanovic via Phabricator via cfe-commits
sstefan1 created this revision.
sstefan1 added a reviewer: jdoerfert.
Herald added subscribers: llvm-commits, cfe-commits, aaron.ballman, dexonsmith, 
guansong, hiraditya, yaxunl.
Herald added projects: clang, LLVM.

D82193  exposed a problem with global type 
definitions in
`OMPConstants.h`. This causes a race when running in thinLTO mode.
Types now live inside of OpenMPIRBuilder to prevent this from happening.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D83176

Files:
  clang/lib/CodeGen/CGDecl.cpp
  clang/lib/CodeGen/CGExpr.cpp
  clang/lib/CodeGen/CGOpenMPRuntime.cpp
  clang/lib/CodeGen/CGOpenMPRuntime.h
  clang/lib/CodeGen/CGStmtOpenMP.cpp
  clang/lib/CodeGen/CodeGenFunction.cpp
  clang/lib/CodeGen/CodeGenModule.cpp
  clang/lib/CodeGen/CodeGenModule.h
  llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
  llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
  llvm/lib/Frontend/OpenMP/OMPConstants.cpp
  llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
  llvm/lib/Transforms/IPO/OpenMPOpt.cpp
  llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp

Index: llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
===
--- llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+++ llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
@@ -19,7 +19,6 @@
 
 using namespace llvm;
 using namespace omp;
-using namespace types;
 
 namespace {
 
@@ -50,7 +49,6 @@
   void TearDown() override {
 BB = nullptr;
 M.reset();
-uninitializeTypes();
   }
 
   LLVMContext Ctx;
Index: llvm/lib/Transforms/IPO/OpenMPOpt.cpp
===
--- llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+++ llvm/lib/Transforms/IPO/OpenMPOpt.cpp
@@ -29,7 +29,6 @@
 
 using namespace llvm;
 using namespace omp;
-using namespace types;
 
 #define DEBUG_TYPE "openmp-opt"
 
@@ -224,11 +223,11 @@
   ICV.InitValue = nullptr; \
   break;   \
 case ICV_ZERO: \
-  ICV.InitValue =  \
-  ConstantInt::get(Type::getInt32Ty(Int32->getContext()), 0);  \
+  ICV.InitValue = ConstantInt::get(\
+  Type::getInt32Ty(OMPBuilder.Int32->getContext()), 0);\
   break;   \
 case ICV_FALSE:\
-  ICV.InitValue = ConstantInt::getFalse(Int1->getContext());   \
+  ICV.InitValue = ConstantInt::getFalse(OMPBuilder.Int1->getContext());\
   break;   \
 case ICV_LAST: \
   break;   \
@@ -293,11 +292,27 @@
 
 Module  = *((*ModuleSlice.begin())->getParent());
 
+// Helper macros for handling __VA_ARGS__ in OMP_RTL
+#define OMP_TYPE(VarName, ...) Type *VarName = OMPBuilder.VarName;
+
+#define OMP_ARRAY_TYPE(VarName, ...)   \
+  ArrayType *VarName##Ty = OMPBuilder.VarName##Ty; \
+  PointerType *VarName##PtrTy = OMPBuilder.VarName##PtrTy;
+
+#define OMP_FUNCTION_TYPE(VarName, ...)\
+  FunctionType *VarName = OMPBuilder.VarName;  \
+  PointerType *VarName##Ptr = OMPBuilder.VarName##Ptr;
+
+#define OMP_STRUCT_TYPE(VarName, ...)  \
+  StructType *VarName = OMPBuilder.VarName;\
+  PointerType *VarName##Ptr = OMPBuilder.VarName##Ptr;
+#include "llvm/Frontend/OpenMP/OMPKinds.def"
+
 #define OMP_RTL(_Enum, _Name, _IsVarArg, _ReturnType, ...) \
   {\
 SmallVector ArgsTypes({__VA_ARGS__});   \
 Function *F = M.getFunction(_Name);\
-if (declMatchesRTFTypes(F, _ReturnType, ArgsTypes)) {  \
+if (declMatchesRTFTypes(F, OMPBuilder._ReturnType, ArgsTypes)) {   \
   auto  = RFIs[_Enum]; \
   RFI.Kind = _Enum;\
   RFI.Name = _Name;\
@@ -553,11 +568,11 @@
"Unexpected replacement value!");
 
 // TODO: Use dominance to find a good position instead.
-auto CanBeMoved = [](CallBase ) {
+auto CanBeMoved = [this](CallBase ) {
   unsigned NumArgs = CB.getNumArgOperands();
   if (NumArgs ==