<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Here is an excerpt from CUDA Toolkit documentation:</p>
    <div class="section" style="margin-top: 0.8em; margin-bottom: 2em;
      color: rgb(0, 0, 0); font-family: "Trebuchet MS",
      "DIN Pro", sans-serif; font-size: 14px; font-style:
      normal; font-variant-ligatures: normal; font-variant-caps: normal;
      font-weight: 400; letter-spacing: normal; orphans: 2; text-align:
      start; text-indent: 0px; text-transform: none; white-space:
      normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width:
      0px; background-color: rgb(255, 255, 255); text-decoration-style:
      initial; text-decoration-color: initial;">
      <h4 class="title sectiontitle" style="margin: 0px 0px 0.3em;
        color: rgb(64, 100, 1); font-size: 14px; font-weight: bold;
        padding-top: 0.2em; clear: both;">.loc</h4>
      <p class="p" style="margin-top: 0px;">Source file location.</p>
    </div>
    <div class="section" style="margin-top: 0.8em; margin-bottom: 2em;
      color: rgb(0, 0, 0); font-family: "Trebuchet MS",
      "DIN Pro", sans-serif; font-size: 14px; font-style:
      normal; font-variant-ligatures: normal; font-variant-caps: normal;
      font-weight: 400; letter-spacing: normal; orphans: 2; text-align:
      start; text-indent: 0px; text-transform: none; white-space:
      normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width:
      0px; background-color: rgb(255, 255, 255); text-decoration-style:
      initial; text-decoration-color: initial;">
      <h4 class="title sectiontitle" style="margin: 0px 0px 0.3em;
        color: rgb(64, 100, 1); font-size: 14px; font-weight: bold;
        padding-top: 0.2em; clear: both;">Syntax</h4>
      <pre style="font-family: Consolas, Courier, "Courier New", monospace; color: rgb(34, 68, 0); background: rgb(234, 239, 224); padding: 0.2em 0.5em; margin-bottom: 1em; border: 0px !important; white-space: pre-wrap; word-wrap: break-word; margin-top: 0.2em;">.loc file_index line_number column_position</pre>
    </div>
    <pre class="moz-signature" cols="72">It just does not allow anything else except for file_index, line number and column.
-------------
Best regards,
Alexey Bataev</pre>
    <div class="moz-cite-prefix">05.04.2018 15:18,
      <a class="moz-txt-link-abbreviated" href="mailto:paul.robinson@sony.com">paul.robinson@sony.com</a> пишет:<br>
    </div>
    <blockquote type="cite"
cite="mid:E3B07FDB86BFF041819DC057DEED8FEA013406593B@USCULXMSG13.am.sony.com">
      <pre wrap="">

</pre>
      <blockquote type="cite">
        <pre wrap="">-----Original Message-----
From: llvm-commits [<a class="moz-txt-link-freetext" href="mailto:llvm-commits-bounces@lists.llvm.org">mailto:llvm-commits-bounces@lists.llvm.org</a>] On Behalf
Of Alexey Bataev via llvm-commits
Sent: Tuesday, April 03, 2018 1:29 PM
To: <a class="moz-txt-link-abbreviated" href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>
Subject: [llvm] r329089 - [DEBUGINFO] Add option that allows to disable
emission of flags in .loc directives.

Author: abataev
Date: Tue Apr  3 10:28:55 2018
New Revision: 329089

URL: <a class="moz-txt-link-freetext" href="https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%3Frev%3D329089%26view%3Drev&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=S6VCogch8%2F2nWIlw64YBWeWFezTM%2Fpr45Fi7rfcwVmU%3D&reserved=0">https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%3Frev%3D329089%26view%3Drev&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=S6VCogch8%2F2nWIlw64YBWeWFezTM%2Fpr45Fi7rfcwVmU%3D&reserved=0</a>
Log:
[DEBUGINFO] Add option that allows to disable emission of flags in .loc
directives.

Summary:
Some targets do not support extended format of .loc directive and
support only simple format: .loc <FileID> <Line> <Column>. Patch adds
MCAsmInfo flag and option that allows emit .loc directive without
additional flags.

Reviewers: echristo

Subscribers: llvm-commits

Differential Revision: <a class="moz-txt-link-freetext" href="https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Freviews.llvm.org%2FD45184&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=THAOiYHyeAvQaszi1tks4kf5JBGkEUH69s4DvV1l2Wc%3D&reserved=0">https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Freviews.llvm.org%2FD45184&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=THAOiYHyeAvQaszi1tks4kf5JBGkEUH69s4DvV1l2Wc%3D&reserved=0</a>

Added:
    llvm/trunk/test/DebugInfo/Generic/extended-loc-directive.ll
Modified:
    llvm/trunk/include/llvm/MC/MCAsmInfo.h
    llvm/trunk/lib/MC/MCAsmInfo.cpp
    llvm/trunk/lib/MC/MCAsmStreamer.cpp

Modified: llvm/trunk/include/llvm/MC/MCAsmInfo.h
URL: <a class="moz-txt-link-freetext" href="https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=oBsaB3ngphNmuh3RgdJefb4l4BWY5h2kBaonn95FW%2Fc%3D&reserved=0">https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=oBsaB3ngphNmuh3RgdJefb4l4BWY5h2kBaonn95FW%2Fc%3D&reserved=0</a>
project/llvm/trunk/include/llvm/MC/MCAsmInfo.h?rev=329089&r1=329088&r2=329
089&view=diff
==========================================================================
====
--- llvm/trunk/include/llvm/MC/MCAsmInfo.h (original)
+++ llvm/trunk/include/llvm/MC/MCAsmInfo.h Tue Apr  3 10:28:55 2018
@@ -344,6 +344,10 @@ protected:
   /// For example, foo(plt) instead of foo@plt.  Defaults to false.
   bool UseParensForSymbolVariant = false;

+  /// True if the target supports flags in ".loc" directive, false if
only
+  /// location is allowed.
+  bool SupportsExtendedDwarfLocDirective = true;
+
   //===--- Prologue State ----------------------------------------------
===//

   std::vector<MCCFIInstruction> InitialFrameState;
@@ -579,6 +583,9 @@ public:
   bool doDwarfFDESymbolsUseAbsDiff() const { return
DwarfFDESymbolsUseAbsDiff; }
   bool useDwarfRegNumForCFI() const { return DwarfRegNumForCFI; }
   bool useParensForSymbolVariant() const { return
UseParensForSymbolVariant; }
+  bool supportsExtendedDwarfLocDirective() const {
+    return SupportsExtendedDwarfLocDirective;
+  }

   void addInitialFrameState(const MCCFIInstruction &Inst) {
     InitialFrameState.push_back(Inst);

Modified: llvm/trunk/lib/MC/MCAsmInfo.cpp
URL: <a class="moz-txt-link-freetext" href="https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=oBsaB3ngphNmuh3RgdJefb4l4BWY5h2kBaonn95FW%2Fc%3D&reserved=0">https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=oBsaB3ngphNmuh3RgdJefb4l4BWY5h2kBaonn95FW%2Fc%3D&reserved=0</a>
project/llvm/trunk/lib/MC/MCAsmInfo.cpp?rev=329089&r1=329088&r2=329089&vie
w=diff
==========================================================================
====
--- llvm/trunk/lib/MC/MCAsmInfo.cpp (original)
+++ llvm/trunk/lib/MC/MCAsmInfo.cpp Tue Apr  3 10:28:55 2018
@@ -17,9 +17,18 @@
 #include "llvm/MC/MCContext.h"
 #include "llvm/MC/MCExpr.h"
 #include "llvm/MC/MCStreamer.h"
+#include "llvm/Support/CommandLine.h"

 using namespace llvm;

+enum DefaultOnOff { Default, Enable, Disable };
+static cl::opt<DefaultOnOff> DwarfExtendedLoc(
+    "dwarf-extended-loc", cl::Hidden,
+    cl::desc("Disable emission of the extended flags in .loc
directives."),
+    cl::values(clEnumVal(Default, "Default for platform"),
+               clEnumVal(Enable, "Enabled"), clEnumVal(Disable,
"Disabled")),
+    cl::init(Default));
+
 MCAsmInfo::MCAsmInfo() {
   SeparatorString = ";";
   CommentString = "#";
@@ -41,6 +50,8 @@ MCAsmInfo::MCAsmInfo() {
   Data64bitsDirective = "\t.quad\t";
   GlobalDirective = "\t.globl\t";
   WeakDirective = "\t.weak\t";
+  if (DwarfExtendedLoc != Default)
+    SupportsExtendedDwarfLocDirective = DwarfExtendedLoc == Enable;

   // FIXME: Clang's logic should be synced with the logic used to
initialize
   //        this member and the two implementations should be merged.

Modified: llvm/trunk/lib/MC/MCAsmStreamer.cpp
URL: <a class="moz-txt-link-freetext" href="https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=oBsaB3ngphNmuh3RgdJefb4l4BWY5h2kBaonn95FW%2Fc%3D&reserved=0">https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=oBsaB3ngphNmuh3RgdJefb4l4BWY5h2kBaonn95FW%2Fc%3D&reserved=0</a>
project/llvm/trunk/lib/MC/MCAsmStreamer.cpp?rev=329089&r1=329088&r2=329089
&view=diff
==========================================================================
====
--- llvm/trunk/lib/MC/MCAsmStreamer.cpp (original)
+++ llvm/trunk/lib/MC/MCAsmStreamer.cpp Tue Apr  3 10:28:55 2018
@@ -1171,27 +1171,29 @@ void MCAsmStreamer::EmitDwarfLocDirectiv
                                           unsigned Discriminator,
                                           StringRef FileName) {
   OS << "\t.loc\t" << FileNo << " " << Line << " " << Column;
-  if (Flags & DWARF2_FLAG_BASIC_BLOCK)
-    OS << " basic_block";
-  if (Flags & DWARF2_FLAG_PROLOGUE_END)
-    OS << " prologue_end";
-  if (Flags & DWARF2_FLAG_EPILOGUE_BEGIN)
-    OS << " epilogue_begin";
+  if (MAI->supportsExtendedDwarfLocDirective()) {
+    if (Flags & DWARF2_FLAG_BASIC_BLOCK)
+      OS << " basic_block";
</pre>
      </blockquote>
      <pre wrap="">
The basic_block flag does go all the way back to DWARF v2.
Does NVPTX really not support it?  Because I could imagine
wanting to put additional flags/options under an appropriate
version test, rather than unconditionally always emitting them.
--paulr

</pre>
      <blockquote type="cite">
        <pre wrap="">+    if (Flags & DWARF2_FLAG_PROLOGUE_END)
+      OS << " prologue_end";
+    if (Flags & DWARF2_FLAG_EPILOGUE_BEGIN)
+      OS << " epilogue_begin";

-  unsigned OldFlags = getContext().getCurrentDwarfLoc().getFlags();
-  if ((Flags & DWARF2_FLAG_IS_STMT) != (OldFlags & DWARF2_FLAG_IS_STMT))
{
-    OS << " is_stmt ";
+    unsigned OldFlags = getContext().getCurrentDwarfLoc().getFlags();
+    if ((Flags & DWARF2_FLAG_IS_STMT) != (OldFlags &
DWARF2_FLAG_IS_STMT)) {
+      OS << " is_stmt ";

-    if (Flags & DWARF2_FLAG_IS_STMT)
-      OS << "1";
-    else
-      OS << "0";
-  }
+      if (Flags & DWARF2_FLAG_IS_STMT)
+        OS << "1";
+      else
+        OS << "0";
+    }

-  if (Isa)
-    OS << " isa " << Isa;
-  if (Discriminator)
-    OS << " discriminator " << Discriminator;
+    if (Isa)
+      OS << " isa " << Isa;
+    if (Discriminator)
+      OS << " discriminator " << Discriminator;
+  }

   if (IsVerboseAsm) {
     OS.PadToColumn(MAI->getCommentColumn());

Added: llvm/trunk/test/DebugInfo/Generic/extended-loc-directive.ll
URL: <a class="moz-txt-link-freetext" href="https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=oBsaB3ngphNmuh3RgdJefb4l4BWY5h2kBaonn95FW%2Fc%3D&reserved=0">https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=oBsaB3ngphNmuh3RgdJefb4l4BWY5h2kBaonn95FW%2Fc%3D&reserved=0</a>
project/llvm/trunk/test/DebugInfo/Generic/extended-loc-
directive.ll?rev=329089&view=auto
==========================================================================
====
--- llvm/trunk/test/DebugInfo/Generic/extended-loc-directive.ll (added)
+++ llvm/trunk/test/DebugInfo/Generic/extended-loc-directive.ll Tue Apr  3
10:28:55 2018
@@ -0,0 +1,73 @@
+; RUN: llc -filetype=asm -asm-verbose=0 -O0 -dwarf-extended-loc=Enable <
%s | FileCheck %s --check-prefix ENABLED --check-prefix CHECK
+; RUN: llc -filetype=asm -asm-verbose=0 -O0 -dwarf-extended-loc=Disable <
%s | FileCheck %s --check-prefix DISABLED --check-prefix CHECK
+
+; Check that the assembly output properly handles is_stmt changes. And
since
+; we're testing anyway, check the integrated assembler too.
+
+; Generated with clang from multiline.c:
+; void f1();
+; void f2() {
+;   f1(); f1(); f1();
+;   f1(); f1(); f1();
+; }
+
+
+; CHECK: .loc 1 2 0{{$}}
+; CHECK-NOT: .loc{{ }}
+; ENABLED: .loc 1 3 3 prologue_end{{$}}
+; DISABLED: .loc 1 3 3{{$}}
+; CHECK-NOT: .loc
+; ENABLED: .loc 1 3 9 is_stmt 0{{$}}
+; DISABLED: .loc 1 3 9{{$}}
+; CHECK-NOT: .loc
+; CHECK: .loc 1 3 15{{$}}
+; CHECK-NOT: .loc
+; ENABLED: .loc 1 4 3 is_stmt 1{{$}}
+; DISABLED: .loc 1 4 3{{$}}
+; CHECK-NOT: .loc
+; ENABLED: .loc 1 4 9 is_stmt 0{{$}}
+; DISABLED: .loc 1 4 9{{$}}
+; CHECK-NOT: .loc
+; CHECK: .loc 1 4 15{{$}}
+; CHECK-NOT: .loc
+; ENABLED: .loc 1 5 1 is_stmt 1{{$}}
+; DISABLED: .loc 1 5 1{{$}}
+
+; Function Attrs: nounwind uwtable
+define void @f2() #0 !dbg !4 {
+entry:
+  call void (...) @f1(), !dbg !11
+  call void (...) @f1(), !dbg !12
+  call void (...) @f1(), !dbg !13
+  call void (...) @f1(), !dbg !14
+  call void (...) @f1(), !dbg !15
+  call void (...) @f1(), !dbg !16
+  ret void, !dbg !17
+}
+
+declare void @f1(...) #1
+
+attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "no-
frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-
math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8"
"unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-
elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false"
"no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-
math"="false" "use-soft-float"="false" }
+
+!llvm.dbg.cu = !{!0}
+!llvm.module.flags = !{!8, !9}
+!llvm.ident = !{!10}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang
version 3.6.0 (trunk 225000) (llvm/trunk 224999)", isOptimized: false,
emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals:
!2, imports: !2)
+!1 = !DIFile(filename: "multiline.c", directory: "/tmp/dbginfo")
+!2 = !{}
+!4 = distinct !DISubprogram(name: "f2", line: 2, isLocal: false,
isDefinition: true, isOptimized: false, unit: !0, scopeLine: 2, file: !1,
scope: !5, type: !6, variables: !2)
+!5 = !DIFile(filename: "multiline.c", directory: "/tmp/dbginfo")
+!6 = !DISubroutineType(types: !7)
+!7 = !{null}
+!8 = !{i32 2, !"Dwarf Version", i32 4}
+!9 = !{i32 2, !"Debug Info Version", i32 3}
+!10 = !{!"clang version 3.6.0 (trunk 225000) (llvm/trunk 224999)"}
+!11 = !DILocation(line: 3, column: 3, scope: !4)
+!12 = !DILocation(line: 3, column: 9, scope: !4)
+!13 = !DILocation(line: 3, column: 15, scope: !4)
+!14 = !DILocation(line: 4, column: 3, scope: !4)
+!15 = !DILocation(line: 4, column: 9, scope: !4)
+!16 = !DILocation(line: 4, column: 15, scope: !4)
+!17 = !DILocation(line: 5, column: 1, scope: !4)


_______________________________________________
llvm-commits mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fllvm-commits&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=m%2BEVKRqXZrzmuW1iLBPdRBkA3R8SgiiTLGnHRDG1BY0%3D&reserved=0">https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fllvm-commits&data=02%7C01%7C%7Ce63a66258bf34648aa8208d59b2a0672%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636585527146473294&sdata=m%2BEVKRqXZrzmuW1iLBPdRBkA3R8SgiiTLGnHRDG1BY0%3D&reserved=0</a>
</pre>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>