]> granicus.if.org Git - clang/commitdiff
Revert rL346454: Fix a use-after-free introduced by r344915.
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 9 Nov 2018 19:42:53 +0000 (19:42 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 9 Nov 2018 19:42:53 +0000 (19:42 +0000)
r344915 added a call to ApplyDebugLocation to the sanitizer check
function emitter. Some of the sanitizers are emitted in the function
epilogue though and the LexicalScopeStack is emptied out before. By
detecting this situation and early-exiting from ApplyDebugLocation the
fallback location is used, which is equivalent to the return location.

rdar://problem/45859802
........
Causes EXPENSIVE_CHECKS build bot failures: http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@346549 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp
test/CodeGen/ubsan-debuglog-return.c [deleted file]

index 81cc07dddd1029d3ef903a29c0bfa2e98f264b46..1d999e446ccbf1013993f4fb6057c66a06e55ed5 100644 (file)
@@ -3538,7 +3538,7 @@ void CGDebugInfo::EmitLocation(CGBuilderTy &Builder, SourceLocation Loc) {
   // Update our current location
   setLocation(Loc);
 
-  if (CurLoc.isInvalid() || CurLoc.isMacroID() || LexicalBlockStack.empty())
+  if (CurLoc.isInvalid() || CurLoc.isMacroID())
     return;
 
   llvm::MDNode *Scope = LexicalBlockStack.back();
diff --git a/test/CodeGen/ubsan-debuglog-return.c b/test/CodeGen/ubsan-debuglog-return.c
deleted file mode 100644 (file)
index 31f5ce2..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -x c -debug-info-kind=line-tables-only -emit-llvm -fsanitize=returns-nonnull-attribute -o - %s | FileCheck %s
-// The UBSAN function call in the epilogue needs to have a debug location.
-
-__attribute__((returns_nonnull)) void *allocate() {}
-
-// CHECK: define nonnull i8* @allocate(){{.*}} !dbg
-// CHECK: call void @__ubsan_handle_nonnull_return_v1_abort
-// CHECK-SAME:  !dbg ![[LOC:[0-9]+]]
-// CHECK: ret i8*
-// CHECK-SAME:  !dbg ![[LOC]]