From: Alexey Bataev Date: Mon, 14 Dec 2015 09:26:19 +0000 (+0000) Subject: [OPENMP] Fix debug info for 'atomic' construct. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a64f410d661ba27a8c2a087df930b8c5df841260;p=clang [OPENMP] Fix debug info for 'atomic' construct. Debug info for statement under 'atomic' construct must point exactly to that statement, not the directive itself. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@255487 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGStmtOpenMP.cpp b/lib/CodeGen/CGStmtOpenMP.cpp index bd3c71afb2..eec476bc6b 100644 --- a/lib/CodeGen/CGStmtOpenMP.cpp +++ b/lib/CodeGen/CGStmtOpenMP.cpp @@ -2514,7 +2514,8 @@ void CodeGenFunction::EmitOMPAtomicDirective(const OMPAtomicDirective &S) { } LexicalScope Scope(*this, S.getSourceRange()); - auto &&CodeGen = [&S, Kind, IsSeqCst](CodeGenFunction &CGF) { + auto &&CodeGen = [&S, Kind, IsSeqCst, CS](CodeGenFunction &CGF) { + CGF.EmitStopPoint(CS); EmitOMPAtomicExpr(CGF, Kind, IsSeqCst, S.isPostfixUpdate(), S.getX(), S.getV(), S.getExpr(), S.getUpdateExpr(), S.isXLHSInRHSPart(), S.getLocStart()); diff --git a/test/OpenMP/atomic_codegen.cpp b/test/OpenMP/atomic_codegen.cpp index cab9df7c02..536f2cdffa 100644 --- a/test/OpenMP/atomic_codegen.cpp +++ b/test/OpenMP/atomic_codegen.cpp @@ -112,7 +112,7 @@ void parallel_atomic() { // TERM_DEBUG: call void @__clang_call_terminate // TERM_DEBUG: unreachable } -// TERM_DEBUG-DAG: [[READ_LOC]] = !DILocation(line: [[@LINE-33]], -// TERM_DEBUG-DAG: [[WRITE_LOC]] = !DILocation(line: [[@LINE-28]], -// TERM_DEBUG-DAG: [[UPDATE_LOC]] = !DILocation(line: [[@LINE-22]], -// TERM_DEBUG-DAG: [[CAPTURE_LOC]] = !DILocation(line: [[@LINE-16]], +// TERM_DEBUG-DAG: [[READ_LOC]] = !DILocation(line: [[@LINE-28]], +// TERM_DEBUG-DAG: [[WRITE_LOC]] = !DILocation(line: [[@LINE-22]], +// TERM_DEBUG-DAG: [[UPDATE_LOC]] = !DILocation(line: [[@LINE-16]], +// TERM_DEBUG-DAG: [[CAPTURE_LOC]] = !DILocation(line: [[@LINE-9]],