; RUN: llc < %s | FileCheck %s --check-prefix=ASM
; RUN: llc < %s -filetype=obj | llvm-readobj --codeview - | FileCheck %s --check-prefix=CODEVIEW

; This test checks that for 32-bit x86 we use VFRAME and
; S_DEFRANGE_FRAMEPOINTER_REL with the right offsets. The test has two function
; calls with different stack depths, which makes it impossible to correctly
; describe locals in memory as being ESP-relative.

; The following source can be used with a debugger to check that locals are
; displayed correctly:
; $ cat fpo.cpp
; #if 0
; void __attribute__((optnone)) __declspec(noinline) f(int &a, int &b) {
;   __debugbreak();
;   a += b;
; }
; void __attribute__((optnone)) __declspec(noinline) g(int &a, int &b, int &c) {
;   __debugbreak();
;   a += b;
;   a += c;
; }
; #endif
; void f(int &a, int &b);
; void g(int &a, int &b, int &c);
; int main() {
;   int a = 1;
;   int b = 2;
;   int c = 3;
;   f(a, b);
;   g(a, b, c);
;   return a + b + c;
; }
; $ clang -S -g -gcodeview t.cpp -emit-llvm -o vframe-fpo.ll -Os

; ASM-LABEL: _main:
; ASM:      # %bb.0:                                # %entry
; ASM-NEXT:         pushl   %ebx
; ASM-NEXT:         .cv_fpo_pushreg %ebx
; ASM-NEXT:         pushl   %edi
; ASM-NEXT:         .cv_fpo_pushreg %edi
; ASM-NEXT:         pushl   %esi
; ASM-NEXT:         .cv_fpo_pushreg %esi
; ASM-NEXT:         subl    $12, %esp
; ASM-NEXT:         .cv_fpo_stackalloc      12
; ASM-NEXT:         .cv_fpo_endprologue

; Store locals.
; ASM:         movl    $1, {{.*}}
; ASM:         movl    $2, {{.*}}
; ASM:         movl    $3, {{.*}}

; ASM that store-to-push conversion fires.
; ASM:         pushl
; ASM-NEXT:    pushl
; ASM-NEXT:    calll   "?f@@YAXAAH0@Z"
; ASM-NEXT:    addl    $8, %esp
; ASM:         pushl
; ASM-NEXT:    pushl
; ASM-NEXT:    pushl
; ASM-NEXT:    calll   "?g@@YAXAAH00@Z"

; CODEVIEW:      CodeViewDebugInfo [
; CODEVIEW-NEXT:   Section: .debug$S (4)
; CODEVIEW-NEXT:   Magic: 0x4
; CODEVIEW-NEXT:   Subsection [
; CODEVIEW-NEXT:     SubSectionType: Symbols (0xF1)
; CODEVIEW-NEXT:     SubSectionSize:
; CODEVIEW-NEXT:     Compile3Sym {
; CODEVIEW-NEXT:       Kind: S_COMPILE3 (0x113C)
; CODEVIEW:          }
; CODEVIEW:        ]
; CODEVIEW:        Subsection [
; CODEVIEW-NEXT:     SubSectionType: FrameData (0xF5)
; CODEVIEW-NEXT:     SubSectionSize:
; CODEVIEW-NEXT:     LinkageName: _main
; CODEVIEW:          FrameData {
; CODEVIEW:          }
; CODEVIEW:          FrameData {
; CODEVIEW:          }
; CODEVIEW:          FrameData {
; CODEVIEW:          }
; CODEVIEW:          FrameData {
; CODEVIEW:          }
; CODEVIEW:          FrameData {
; CODEVIEW-NEXT:       RvaStart:
; CODEVIEW-NEXT:       CodeSize:
; CODEVIEW-NEXT:       LocalSize: 0xC
; CODEVIEW-NEXT:       ParamsSize: 0x0
; CODEVIEW-NEXT:       MaxStackSize: 0x0
; CODEVIEW-NEXT:       PrologSize:
; CODEVIEW-NEXT:       SavedRegsSize: 0xC
; CODEVIEW-NEXT:       Flags [ (0x0)
; CODEVIEW-NEXT:       ]

; $T0 is the CFA, the address of the return address, and our defranges are
; relative to it.
; CODEVIEW-NEXT:       FrameFunc [
; CODEVIEW-NEXT:         $T0 .raSearch =
; CODEVIEW-NEXT:         $eip $T0 ^ =
; CODEVIEW-NEXT:         $esp $T0 4 + =
; CODEVIEW-NEXT:         $ebx $T0 4 - ^ =
; CODEVIEW-NEXT:         $edi $T0 8 - ^ =
; CODEVIEW-NEXT:         $esi $T0 12 - ^ =
; CODEVIEW-NEXT:       ]
; CODEVIEW-NEXT:     }

; We push 16 bytes in the prologue, so our local variables are at offsets -16,
; -20, and -24.

; CODEVIEW:      Subsection [
; CODEVIEW-NEXT:   SubSectionType: Symbols (0xF1)
; CODEVIEW-NEXT:   SubSectionSize:
; CODEVIEW-NEXT:   GlobalProcIdSym {
; CODEVIEW-NEXT:     Kind: S_GPROC32_ID (0x1147)
; CODEVIEW:          DisplayName: main
; CODEVIEW:          LinkageName: _main
; CODEVIEW-NEXT:   }
; CODEVIEW-NEXT:   FrameProcSym {
; CODEVIEW-NEXT:     Kind: S_FRAMEPROC (0x1012)
; CODEVIEW-NEXT:     TotalFrameBytes: 0xC
; CODEVIEW-NEXT:     PaddingFrameBytes: 0x0
; CODEVIEW-NEXT:     OffsetToPadding: 0x0
; CODEVIEW-NEXT:     BytesOfCalleeSavedRegisters: 0xC
; CODEVIEW-NEXT:     OffsetOfExceptionHandler: 0x0
; CODEVIEW-NEXT:     SectionIdOfExceptionHandler: 0x0
; CODEVIEW-NEXT:     Flags [ (0x14000)
; CODEVIEW-NEXT:     ]
; CODEVIEW-NEXT:     LocalFramePtrReg: VFRAME (0x7536)
; CODEVIEW-NEXT:     ParamFramePtrReg: VFRAME (0x7536)
; CODEVIEW-NEXT:   }
; CODEVIEW-NEXT:   LocalSym {
; CODEVIEW-NEXT:     Kind: S_LOCAL (0x113E)
; CODEVIEW:          VarName: a
; CODEVIEW-NEXT:   }
; CODEVIEW-NEXT:   DefRangeFramePointerRelSym {
; CODEVIEW-NEXT:     Kind: S_DEFRANGE_FRAMEPOINTER_REL (0x1142)
; CODEVIEW-NEXT:     Offset: -16
; CODEVIEW-NEXT:     LocalVariableAddrRange {
; CODEVIEW-NEXT:       OffsetStart:
; CODEVIEW-NEXT:       ISectStart:
; CODEVIEW-NEXT:       Range:
; CODEVIEW-NEXT:     }
; CODEVIEW-NEXT:   }
; CODEVIEW-NEXT:   LocalSym {
; CODEVIEW-NEXT:     Kind: S_LOCAL (0x113E)
; CODEVIEW:          VarName: b
; CODEVIEW-NEXT:   }
; CODEVIEW-NEXT:   DefRangeFramePointerRelSym {
; CODEVIEW-NEXT:     Kind: S_DEFRANGE_FRAMEPOINTER_REL (0x1142)
; CODEVIEW-NEXT:     Offset: -20
; CODEVIEW-NEXT:     LocalVariableAddrRange {
; CODEVIEW-NEXT:       OffsetStart:
; CODEVIEW-NEXT:       ISectStart:
; CODEVIEW-NEXT:       Range:
; CODEVIEW-NEXT:     }
; CODEVIEW-NEXT:   }
; CODEVIEW-NEXT:   LocalSym {
; CODEVIEW-NEXT:     Kind: S_LOCAL (0x113E)
; CODEVIEW:          VarName: c
; CODEVIEW-NEXT:   }
; CODEVIEW-NEXT:   DefRangeFramePointerRelSym {
; CODEVIEW-NEXT:     Kind: S_DEFRANGE_FRAMEPOINTER_REL (0x1142)
; CODEVIEW-NEXT:     Offset: -24
; CODEVIEW-NEXT:     LocalVariableAddrRange {
; CODEVIEW-NEXT:       OffsetStart:
; CODEVIEW-NEXT:       ISectStart:
; CODEVIEW-NEXT:       Range:
; CODEVIEW-NEXT:     }
; CODEVIEW-NEXT:   }
; CODEVIEW-NEXT:   ProcEnd {
; CODEVIEW-NEXT:     Kind: S_PROC_ID_END (0x114F)
; CODEVIEW-NEXT:   }
; CODEVIEW-NEXT: ]


; ModuleID = 'fpo.cpp'
source_filename = "fpo.cpp"
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
target triple = "i386-pc-windows-msvc19.14.26433"

; Function Attrs: norecurse optsize
define dso_local i32 @main() local_unnamed_addr #0 !dbg !8 {
entry:
  %a = alloca i32, align 4
  %b = alloca i32, align 4
  %c = alloca i32, align 4
  %0 = bitcast i32* %a to i8*, !dbg !16
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %0) #4, !dbg !16
  call void @llvm.dbg.declare(metadata i32* %a, metadata !13, metadata !DIExpression()), !dbg !16
  store i32 1, i32* %a, align 4, !dbg !16, !tbaa !17
  %1 = bitcast i32* %b to i8*, !dbg !21
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %1) #4, !dbg !21
  call void @llvm.dbg.declare(metadata i32* %b, metadata !14, metadata !DIExpression()), !dbg !21
  store i32 2, i32* %b, align 4, !dbg !21, !tbaa !17
  %2 = bitcast i32* %c to i8*, !dbg !22
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %2) #4, !dbg !22
  call void @llvm.dbg.declare(metadata i32* %c, metadata !15, metadata !DIExpression()), !dbg !22
  store i32 3, i32* %c, align 4, !dbg !22, !tbaa !17
  call void @"?f@@YAXAAH0@Z"(i32* nonnull dereferenceable(4) %a, i32* nonnull dereferenceable(4) %b) #5, !dbg !23
  call void @"?g@@YAXAAH00@Z"(i32* nonnull dereferenceable(4) %a, i32* nonnull dereferenceable(4) %b, i32* nonnull dereferenceable(4) %c) #5, !dbg !24
  %3 = load i32, i32* %a, align 4, !dbg !25, !tbaa !17
  %4 = load i32, i32* %b, align 4, !dbg !25, !tbaa !17
  %add = add nsw i32 %4, %3, !dbg !25
  %5 = load i32, i32* %c, align 4, !dbg !25, !tbaa !17
  %add1 = add nsw i32 %add, %5, !dbg !25
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %2) #4, !dbg !26
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %1) #4, !dbg !26
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %0) #4, !dbg !26
  ret i32 %add1, !dbg !25
}

; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1

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

; Function Attrs: optsize
declare dso_local void @"?f@@YAXAAH0@Z"(i32* dereferenceable(4), i32* dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: optsize
declare dso_local void @"?g@@YAXAAH00@Z"(i32* dereferenceable(4), i32* dereferenceable(4), i32* dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1

attributes #0 = { norecurse optsize "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pentium4" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { argmemonly nounwind }
attributes #2 = { nounwind readnone speculatable }
attributes #3 = { optsize "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pentium4" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #4 = { nounwind }
attributes #5 = { optsize }

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

!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 8.0.0 ", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, nameTableKind: None)
!1 = !DIFile(filename: "fpo.cpp", directory: "C:\5Csrc\5Cllvm-project\5Cbuild", checksumkind: CSK_MD5, checksum: "d0bb7e43f4e54936a94da008319a7de3")
!2 = !{}
!3 = !{i32 1, !"NumRegisterParameters", i32 0}
!4 = !{i32 2, !"CodeView", i32 1}
!5 = !{i32 2, !"Debug Info Version", i32 3}
!6 = !{i32 1, !"wchar_size", i32 2}
!7 = !{!"clang version 8.0.0 "}
!8 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 14, type: !9, isLocal: false, isDefinition: true, scopeLine: 14, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !12)
!9 = !DISubroutineType(types: !10)
!10 = !{!11}
!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!12 = !{!13, !14, !15}
!13 = !DILocalVariable(name: "a", scope: !8, file: !1, line: 15, type: !11)
!14 = !DILocalVariable(name: "b", scope: !8, file: !1, line: 16, type: !11)
!15 = !DILocalVariable(name: "c", scope: !8, file: !1, line: 17, type: !11)
!16 = !DILocation(line: 15, scope: !8)
!17 = !{!18, !18, i64 0}
!18 = !{!"int", !19, i64 0}
!19 = !{!"omnipotent char", !20, i64 0}
!20 = !{!"Simple C++ TBAA"}
!21 = !DILocation(line: 16, scope: !8)
!22 = !DILocation(line: 17, scope: !8)
!23 = !DILocation(line: 18, scope: !8)
!24 = !DILocation(line: 19, scope: !8)
!25 = !DILocation(line: 20, scope: !8)
!26 = !DILocation(line: 21, scope: !8)
