rnk added a comment.

Thanks!



================
Comment at: clang/include/clang/Sema/Sema.h:1320
   sema::FunctionScopeInfo *getCurFunction() const {
-    return FunctionScopes.back();
+    return FunctionScopes.empty() ? nullptr : FunctionScopes.back();
   }
----------------
thakis wrote:
> The other patch description said "This means the FunctionScopes stack will 
> often be empty, which will make getCurFunction() assert" -- did you change 
> your mind, or did you mean "which will make the caller of getCurFunction() 
> crash when it uses the null pointer"?
I changed my mind after fixing the fallout caused by the assert in `.back()`. 
There are a lot of places that want to say "if we're in a function scope and we 
had a VLA or object with a destructor, then mark this as a branch protected 
scope". If the variable is in global or class scope, we don't need to mark the 
scope as branch protected, and a null check seems like the right way to express 
that.


================
Comment at: clang/lib/Sema/SemaDecl.cpp:11328
 
-  if (var->getType().isDestructedType() == QualType::DK_nontrivial_c_struct)
+  if (var->hasLocalStorage() &&
+      var->getType().isDestructedType() == QualType::DK_nontrivial_c_struct)
----------------
thakis wrote:
> the hasLocalStorage() check addition here seems unrelated?
This is a different way of checking if the variable is in function scope. I 
think I made this change before making getCurFunction() return nullptr.


https://reviews.llvm.org/D44039



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

Reply via email to