[PATCH] D20141: Check for nullptr argument.

Artem Belevich via cfe-commits cfe-commits at lists.llvm.org
Tue May 10 16:14:25 PDT 2016


tra created this revision.
tra added reviewers: jlebar, jordan_rose.
tra added a subscriber: cfe-commits.

GetOrCreateLLVMGlobal() accepts nullptr D, but in some cases we end up dereferencing it without checking if it's non-null.

Fixes PR15492.

http://reviews.llvm.org/D20141

Files:
  lib/CodeGen/CodeGenModule.cpp

Index: lib/CodeGen/CodeGenModule.cpp
===================================================================
--- lib/CodeGen/CodeGenModule.cpp
+++ lib/CodeGen/CodeGenModule.cpp
@@ -2080,7 +2080,7 @@
 
       // Check that D is not yet in DiagnosedConflictingDefinitions is required
       // to make sure that we issue an error only once.
-      if (lookupRepresentativeDecl(MangledName, OtherGD) &&
+      if (D && lookupRepresentativeDecl(MangledName, OtherGD) &&
           (D->getCanonicalDecl() != OtherGD.getCanonicalDecl().getDecl()) &&
           (OtherD = dyn_cast<VarDecl>(OtherGD.getDecl())) &&
           OtherD->hasInit() &&
@@ -2299,7 +2299,7 @@
 
 unsigned CodeGenModule::GetGlobalVarAddressSpace(const VarDecl *D,
                                                  unsigned AddrSpace) {
-  if (LangOpts.CUDA && LangOpts.CUDAIsDevice) {
+  if (D && LangOpts.CUDA && LangOpts.CUDAIsDevice) {
     if (D->hasAttr<CUDAConstantAttr>())
       AddrSpace = getContext().getTargetAddressSpace(LangAS::cuda_constant);
     else if (D->hasAttr<CUDASharedAttr>())


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D20141.56832.patch
Type: text/x-patch
Size: 1064 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160510/39f4c59a/attachment.bin>


More information about the cfe-commits mailing list