r240452 - InstrProf: Fix a crash when an implicit def appears in a macro

Justin Bogner mail at justinbogner.com
Tue Jun 23 13:29:09 PDT 2015


Author: bogner
Date: Tue Jun 23 15:29:09 2015
New Revision: 240452

URL: http://llvm.org/viewvc/llvm-project?rev=240452&view=rev
Log:
InstrProf: Fix a crash when an implicit def appears in a macro

Added:
    cfe/trunk/test/CoverageMapping/implicit-def-in-macro.m
Modified:
    cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp

Modified: cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp?rev=240452&r1=240451&r2=240452&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp (original)
+++ cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp Tue Jun 23 15:29:09 2015
@@ -475,7 +475,8 @@ struct CounterCoverageMappingBuilder
   /// files, this adjusts our current region stack and creates the file regions
   /// for the exited file.
   void handleFileExit(SourceLocation NewLoc) {
-    if (SM.isWrittenInSameFile(MostRecentLocation, NewLoc))
+    if (NewLoc.isInvalid() ||
+        SM.isWrittenInSameFile(MostRecentLocation, NewLoc))
       return;
 
     // If NewLoc is not in a file that contains MostRecentLocation, walk up to

Added: cfe/trunk/test/CoverageMapping/implicit-def-in-macro.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CoverageMapping/implicit-def-in-macro.m?rev=240452&view=auto
==============================================================================
--- cfe/trunk/test/CoverageMapping/implicit-def-in-macro.m (added)
+++ cfe/trunk/test/CoverageMapping/implicit-def-in-macro.m Tue Jun 23 15:29:09 2015
@@ -0,0 +1,16 @@
+// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -triple x86_64-apple-darwin -fobjc-runtime=macosx-10.10.0 -fblocks -fobjc-arc %s | FileCheck %s
+
+ at interface Foo
+ at end
+#define Bar Foo
+
+ at implementation Blah
+// CHECK-LABEL: +[Blah load]:
++ load { // CHECK: File 0, [[@LINE]]:8 -> [[END:[0-9:]+]] = #0
+  return 0;
+  // CHECK: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:6 = 0
+  Bar *attribute; // CHECK: File 0, [[@LINE]]:6 -> [[END]] = 0
+}
+ at end
+
+int main() {}





More information about the cfe-commits mailing list