; RUN: opt < %s -S -passes=simplifycfg | FileCheck %s

; When SimplifyCFG changes the PHI node into a select instruction, the debug
; information becomes ambiguous. It causes the debugger to display wrong
; variable value.
;
; When in the debugger, on the line "if (read == 4)", the value of "result"
; is reported as '2', where it should be zero.

; IR generated with:
; clang -S -g -O2 -emit-llvm pr38763.cpp -o pr38763.ll -mllvm -opt-bisect-limit=10

; // pr38763.cpp
; int main() {
;   volatile int foo = 4;
;   int read = foo;
;   int read1 = foo;
;
;   int result = 0;
;   if (read == 4) {
;     result = read1 + 2;
;   } else {
;     result = read1 - 2;
;   }
;
;   return result;
; }

; Remove the '@llvm.dbg.value' associated with 'result' for the true/false
; branches, as they becomes ambiguous.

; CHECK-LABEL: entry
; CHECK:  %cmp = icmp eq i32 %foo.0., 4, !dbg !14
; CHECK:  %add = add nsw i32 %foo.0.4, 2, !dbg !16
; CHECK-NOT: #dbg_value(i32 %add
; CHECK:  %sub = add nsw i32 %foo.0.4, -2, !dbg !16
; CHECK-NOT: #dbg_value(i32 %sub
; CHECK:  %result.0 = select i1 %cmp, i32 %add, i32 %sub
; CHECK:  #dbg_value(i32 %result.0, !12, !DIExpression(), !13

; ModuleID = 'pr38763.cpp'
source_filename = "pr38763.cpp"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

; Function Attrs: norecurse nounwind uwtable
define dso_local i32 @main() local_unnamed_addr #0 !dbg !7 {
entry:
  %foo = alloca i32, align 4
  store volatile i32 4, ptr %foo, align 4
  %foo.0. = load volatile i32, ptr %foo, align 4
  %foo.0.4 = load volatile i32, ptr %foo, align 4
  call void @llvm.dbg.value(metadata i32 0, metadata !16, metadata !DIExpression()), !dbg !27
  %cmp = icmp eq i32 %foo.0., 4, !dbg !28
  br i1 %cmp, label %if.then, label %if.else, !dbg !30

if.then:                                          ; preds = %entry
  %add = add nsw i32 %foo.0.4, 2, !dbg !31
  call void @llvm.dbg.value(metadata i32 %add, metadata !16, metadata !DIExpression()), !dbg !27
  br label %if.end

if.else:                                          ; preds = %entry
  %sub = add nsw i32 %foo.0.4, -2, !dbg !34
  call void @llvm.dbg.value(metadata i32 %sub, metadata !16, metadata !DIExpression()), !dbg !27
  br label %if.end

if.end:                                           ; preds = %if.else, %if.then
  %result.0 = phi i32 [ %add, %if.then ], [ %sub, %if.else ]
  call void @llvm.dbg.value(metadata i32 %result.0, metadata !16, metadata !DIExpression()), !dbg !27
  ret i32 %result.0
}

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

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

!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 8.0.0 (trunk 342209)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, nameTableKind: None)
!1 = !DIFile(filename: "pr38763.cpp", directory: ".")
!2 = !{}
!3 = !{i32 2, !"Dwarf Version", i32 4}
!4 = !{i32 2, !"Debug Info Version", i32 3}
!5 = !{i32 1, !"wchar_size", i32 4}
!6 = !{!"clang version 8.0.0 (trunk 342209)"}
!7 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !11)
!8 = !DISubroutineType(types: !9)
!9 = !{!10}
!10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!11 = !{!16}
!16 = !DILocalVariable(name: "result", scope: !7, file: !1, line: 6, type: !10)
!27 = !DILocation(line: 6, column: 7, scope: !7)
!28 = !DILocation(line: 7, column: 12, scope: !29)
!29 = distinct !DILexicalBlock(scope: !7, file: !1, line: 7, column: 7)
!30 = !DILocation(line: 7, column: 7, scope: !7)
!31 = !DILocation(line: 8, column: 20, scope: !32)
!32 = distinct !DILexicalBlock(scope: !29, file: !1, line: 7, column: 18)
!34 = !DILocation(line: 10, column: 20, scope: !35)
!35 = distinct !DILexicalBlock(scope: !29, file: !1, line: 9, column: 10)
