<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - ISel is dropping constant llvm.dbg.value"
   href="https://bugs.llvm.org/show_bug.cgi?id=32154">32154</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>ISel is dropping constant llvm.dbg.value
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>DebugInfo
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>aprantl@apple.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Compiled with -O1 -g (r296116)

  float pi() __attribute__ ((noinline));
  float pi() { return 3.14f; }
  void barrier();
  void foo(float f) {
    barrier();
    f = pi();
  }

source_filename = "t.c"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx"

; Function Attrs: noinline norecurse nounwind readnone ssp uwtable
define float @pi() local_unnamed_addr #0 !dbg !7 {
entry:
  ret float 0x40091EB860000000, !dbg !11
}

; Function Attrs: nounwind ssp uwtable
define void @foo(float %f) local_unnamed_addr #1 !dbg !12 {
entry:
  tail call void @llvm.dbg.value(metadata float %f, i64 0, metadata !16,
metadata !17), !dbg !18
  tail call void (...) @barrier() #4, !dbg !19
  tail call void @llvm.dbg.value(metadata float 0x40091EB860000000, i64 0,
metadata !16, metadata !17), !dbg !18
  ret void, !dbg !20
}

declare void @barrier(...) local_unnamed_addr

; Function Attrs: nounwind readnone
declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #3

attributes #0 = { noinline norecurse nounwind readnone ssp uwtable}
attributes #1 = { nounwind ssp uwtable }
attributes #3 = { nounwind readnone }
attributes #4 = { nounwind }

!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4, !5}
!llvm.ident = !{!6}

!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang
version 5.0.0 (trunk 296116) (llvm/trunk 296134)", isOptimized: true,
runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
!1 = !DIFile(filename: "t.c", directory: "/tmp")
!2 = !{}
!3 = !{i32 2, !"Dwarf Version", i32 4}
!4 = !{i32 2, !"Debug Info Version", i32 3}
!5 = !{i32 1, !"PIC Level", i32 2}
!6 = !{!"clang version 5.0.0 (trunk 296116) (llvm/trunk 296134)"}
!7 = distinct !DISubprogram(name: "pi", scope: !1, file: !1, line: 2, type: !8,
isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: true, unit: !0,
variables: !2)
!8 = !DISubroutineType(types: !9)
!9 = !{!10}
!10 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float)
!11 = !DILocation(line: 2, column: 16, scope: !7)
!12 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 4, type:
!13, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped,
isOptimized: true, unit: !0, variables: !15)
!13 = !DISubroutineType(types: !14)
!14 = !{null, !10}
!15 = !{!16}
!16 = !DILocalVariable(name: "f", arg: 1, scope: !12, file: !1, line: 4, type:
!10)
!17 = !DIExpression()
!18 = !DILocation(line: 4, column: 18, scope: !12)
!19 = !DILocation(line: 5, column: 5, scope: !12)
!20 = !DILocation(line: 7, column: 3, scope: !12)



# *** IR Dump After Tail Duplication ***:
# Machine code for function foo: IsSSA, TracksLiveness

BB#0: derived from LLVM BB %entry
        DBG_VALUE %XMM0, %noreg, !"f", <!17>; line no:4
        %vreg1<def> = MOV32r0 %EFLAGS<imp-def,dead>; GR32:%vreg1 dbg:t.c:5:5
        %vreg2<def> = COPY %vreg1:sub_8bit; GR8:%vreg2 GR32:%vreg1 dbg:t.c:5:5
        %AL<def> = COPY %vreg2; GR8:%vreg2 dbg:t.c:5:5
        TCRETURNdi64 <ga:@barrier>, 0, <regmask %BH %BL %BP %BPL %BX %EBP %EBX
%RBP %RBX %R12 %R13 %R14 %R15 %R12B %R13B %R14B %R15B %R12D %R13D %R14D %R15D
%R12W %R13W %R14W %R15W>, %RSP<imp-use>, %AL<imp-use>; dbg:t.c:5:5

# End machine code for function foo.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>