brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.0 KiB · 72e7cfc Raw
566 lines · plain
1; ARM EHABI integrated test2 3; This test case checks whether the ARM DWARF stack frame directives4; are properly generated or not.5 6; We have to check several cases:7; (1) arm with -frame-pointer=all8; (2) arm without -frame-pointer=all9; (3) armv7 with -frame-pointer=all10; (4) armv7 without -frame-pointer=all11; (5) thumb with -frame-pointer=all12; (6) thumb without -frame-pointer=all13; (7) thumbv7 with -frame-pointer=all14; (8) thumbv7 without -frame-pointer=all15; (9) thumbv7 with -no-integrated-as16 17; RUN: llc -mtriple arm-unknown-linux-gnueabi \18; RUN:     -frame-pointer=all -filetype=asm -o - %s \19; RUN:   | FileCheck %s --check-prefix=CHECK-FP20 21; RUN: llc -mtriple arm-unknown-linux-gnueabi \22; RUN:     -filetype=asm -o - %s \23; RUN:   | FileCheck %s --check-prefix=CHECK-FP-ELIM24 25; RUN: llc -mtriple armv7-unknown-linux-gnueabi \26; RUN:     -frame-pointer=all -filetype=asm -o - %s \27; RUN:   | FileCheck %s --check-prefix=CHECK-V7-FP28 29; RUN: llc -mtriple armv7-unknown-linux-gnueabi \30; RUN:     -filetype=asm -o - %s \31; RUN:   | FileCheck %s --check-prefix=CHECK-V7-FP-ELIM32 33; RUN: llc -mtriple thumbv5-unknown-linux-gnueabi \34; RUN:     -frame-pointer=all -filetype=asm -o - %s \35; RUN:   | FileCheck %s --check-prefix=CHECK-THUMB-FP36 37; RUN: llc -mtriple thumbv5-unknown-linux-gnueabi \38; RUN:     -filetype=asm -o - %s \39; RUN:   | FileCheck %s --check-prefix=CHECK-THUMB-FP-ELIM40 41; RUN: llc -mtriple thumbv7-unknown-linux-gnueabi \42; RUN:     -frame-pointer=all -filetype=asm -o - %s \43; RUN:   | FileCheck %s --check-prefix=CHECK-THUMB-V7-FP44 45; RUN: llc -mtriple thumbv7-unknown-linux-gnueabi \46; RUN:     -filetype=asm -o - %s \47; RUN:   | FileCheck %s --check-prefix=CHECK-THUMB-V7-FP-ELIM48 49; RUN: llc -mtriple thumbv7-unknown-linux-gnueabi \50; RUN:     -frame-pointer=all -no-integrated-as -filetype=asm -o - %s \51; RUN:   | FileCheck %s --check-prefix=CHECK-THUMB-V7-FP-NOIAS52 53;-------------------------------------------------------------------------------54; Test 155;-------------------------------------------------------------------------------56; This is the LLVM assembly generated from following C++ code:57;58;   extern void print(int, int, int, int, int);59;   extern void print(double, double, double, double, double);60;61;   void test(int a, int b, int c, int d, int e,62;             double m, double n, double p, double q, double r) {63;     try {64;       print(a, b, c, d, e);65;     } catch (...) {66;       print(m, n, p, q, r);67;     }68;   }69 70declare void @_Z5printiiiii(i32, i32, i32, i32, i32)71 72declare void @_Z5printddddd(double, double, double, double, double)73 74define void @_Z4testiiiiiddddd(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e,75                               double %m, double %n, double %p,76                               double %q, double %r) personality ptr @__gxx_personality_v0 {77entry:78  invoke void @_Z5printiiiii(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e)79          to label %try.cont unwind label %lpad80 81lpad:82  %0 = landingpad { ptr, i32 }83          catch ptr null84  %1 = extractvalue { ptr, i32 } %0, 085  %2 = tail call ptr @__cxa_begin_catch(ptr %1)86  invoke void @_Z5printddddd(double %m, double %n, double %p,87                             double %q, double %r)88          to label %invoke.cont2 unwind label %lpad189 90invoke.cont2:91  tail call void @__cxa_end_catch()92  br label %try.cont93 94try.cont:95  ret void96 97lpad1:98  %3 = landingpad { ptr, i32 }99          cleanup100  invoke void @__cxa_end_catch()101          to label %eh.resume unwind label %terminate.lpad102 103eh.resume:104  resume { ptr, i32 } %3105 106terminate.lpad:107  %4 = landingpad { ptr, i32 }108          catch ptr null109  %5 = extractvalue { ptr, i32 } %4, 0110  tail call void @__clang_call_terminate(ptr %5)111  unreachable112}113 114declare void @__clang_call_terminate(ptr)115 116declare i32 @__gxx_personality_v0(...)117 118declare ptr @__cxa_begin_catch(ptr)119 120declare void @__cxa_end_catch()121 122declare void @_ZSt9terminatev()123 124!llvm.dbg.cu = !{!0}125!llvm.module.flags = !{!10, !11}126!llvm.ident = !{!12}127 128!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)129!1 = !DIFile(filename: "exp.cpp", directory: "/tmp")130!2 = !{}131!4 = distinct !DISubprogram(name: "test", linkageName: "_Z4testiiiiiddddd", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 5, file: !1, scope: !5, type: !6, retainedNodes: !2)132!5 = !DIFile(filename: "exp.cpp", directory: "/tmp")133!6 = !DISubroutineType(types: !7)134!7 = !{null, !8, !8, !8, !8, !8, !9, !9, !9, !9, !9}135!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)136!9 = !DIBasicType(tag: DW_TAG_base_type, name: "double", size: 64, align: 64, encoding: DW_ATE_float)137!10 = !{i32 2, !"Dwarf Version", i32 4}138!11 = !{i32 1, !"Debug Info Version", i32 3}139!12 = !{!"clang version 3.5 "}140!13 = !DILocalVariable(name: "a", line: 4, arg: 1, scope: !4, file: !5, type: !8)141!14 = !DILocation(line: 4, scope: !4)142!15 = !DILocalVariable(name: "b", line: 4, arg: 2, scope: !4, file: !5, type: !8)143!16 = !DILocalVariable(name: "c", line: 4, arg: 3, scope: !4, file: !5, type: !8)144!17 = !DILocalVariable(name: "d", line: 4, arg: 4, scope: !4, file: !5, type: !8)145!18 = !DILocalVariable(name: "e", line: 4, arg: 5, scope: !4, file: !5, type: !8)146!19 = !DILocalVariable(name: "m", line: 5, arg: 6, scope: !4, file: !5, type: !9)147!20 = !DILocation(line: 5, scope: !4)148!21 = !DILocalVariable(name: "n", line: 5, arg: 7, scope: !4, file: !5, type: !9)149!22 = !DILocalVariable(name: "p", line: 5, arg: 8, scope: !4, file: !5, type: !9)150!23 = !DILocalVariable(name: "q", line: 5, arg: 9, scope: !4, file: !5, type: !9)151!24 = !DILocalVariable(name: "r", line: 5, arg: 10, scope: !4, file: !5, type: !9)152!25 = !DILocation(line: 7, scope: !26)153!26 = distinct !DILexicalBlock(line: 6, column: 0, file: !1, scope: !4)154!27 = !DILocation(line: 8, scope: !26)155!28 = !DILocation(line: 11, scope: !26)156!29 = !DILocation(line: 9, scope: !30)157!30 = distinct !DILexicalBlock(line: 8, column: 0, file: !1, scope: !4)158!31 = !DILocation(line: 10, scope: !30)159!32 = !DILocation(line: 10, scope: !4)160!33 = !DILocation(line: 11, scope: !4)161!34 = !DILocation(line: 11, scope: !30)162 163; CHECK-FP-LABEL: _Z4testiiiiiddddd:164; CHECK-FP:   .cfi_startproc165; CHECK-FP:   push   {r4, r5, r6, r7, r8, r9, r10, r11, lr}166; CHECK-FP:   .cfi_def_cfa_offset 36167; CHECK-FP:   .cfi_offset lr, -4168; CHECK-FP:   .cfi_offset r11, -8169; CHECK-FP:   .cfi_offset r10, -12170; CHECK-FP:   .cfi_offset r9, -16171; CHECK-FP:   .cfi_offset r8, -20172; CHECK-FP:   .cfi_offset r7, -24173; CHECK-FP:   .cfi_offset r6, -28174; CHECK-FP:   .cfi_offset r5, -32175; CHECK-FP:   .cfi_offset r4, -36176; CHECK-FP:   add    r11, sp, #28177; CHECK-FP:   .cfi_def_cfa r11, 8178; CHECK-FP:   sub    sp, sp, #44179; CHECK-FP:   .cfi_endproc180 181; CHECK-FP-ELIM-LABEL: _Z4testiiiiiddddd:182; CHECK-FP-ELIM:   .cfi_startproc183; CHECK-FP-ELIM:   push  {r4, r5, r6, r7, r8, r9, r10, r11, lr}184; CHECK-FP-ELIM:   .cfi_def_cfa_offset 36185; CHECK-FP-ELIM:   .cfi_offset lr, -4186; CHECK-FP-ELIM:   .cfi_offset r11, -8187; CHECK-FP-ELIM:   .cfi_offset r10, -12188; CHECK-FP-ELIM:   .cfi_offset r9, -16189; CHECK-FP-ELIM:   .cfi_offset r8, -20190; CHECK-FP-ELIM:   .cfi_offset r7, -24191; CHECK-FP-ELIM:   .cfi_offset r6, -28192; CHECK-FP-ELIM:   .cfi_offset r5, -32193; CHECK-FP-ELIM:   .cfi_offset r4, -36194; CHECK-FP-ELIM:   sub   sp, sp, #36195; CHECK-FP-ELIM:   .cfi_def_cfa_offset 72196; CHECK-FP-ELIM:   .cfi_endproc197 198; CHECK-V7-FP-LABEL: _Z4testiiiiiddddd:199; CHECK-V7-FP:   .cfi_startproc200; CHECK-V7-FP:   push   {r11, lr}201; CHECK-V7-FP:   .cfi_def_cfa_offset 8202; CHECK-V7-FP:   .cfi_offset lr, -4203; CHECK-V7-FP:   .cfi_offset r11, -8204; CHECK-V7-FP:   mov     r11, sp205; CHECK-V7-FP:   .cfi_def_cfa_register r11206; CHECK-V7-FP:   vpush  {d8, d9, d10, d11, d12}207; CHECK-V7-FP:   .cfi_offset d12, -16208; CHECK-V7-FP:   .cfi_offset d11, -24209; CHECK-V7-FP:   .cfi_offset d10, -32210; CHECK-V7-FP:   .cfi_offset d9, -40211; CHECK-V7-FP:   .cfi_offset d8, -48212; CHECK-V7-FP:   sub    sp, sp, #24213; CHECK-V7-FP:   .cfi_endproc214 215; CHECK-V7-FP-ELIM-LABEL: _Z4testiiiiiddddd:216; CHECK-V7-FP-ELIM:   .cfi_startproc217; CHECK-V7-FP-ELIM:   push   {r11, lr}218; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 8219; CHECK-V7-FP-ELIM:   .cfi_offset lr, -4220; CHECK-V7-FP-ELIM:   .cfi_offset r11, -8221; CHECK-V7-FP-ELIM:   vpush  {d8, d9, d10, d11, d12}222; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 48223; CHECK-V7-FP-ELIM:   .cfi_offset d12, -16224; CHECK-V7-FP-ELIM:   .cfi_offset d11, -24225; CHECK-V7-FP-ELIM:   .cfi_offset d10, -32226; CHECK-V7-FP-ELIM:   .cfi_offset d9, -40227; CHECK-V7-FP-ELIM:   .cfi_offset d8, -48228; CHECK-V7-FP-ELIM:   sub    sp, sp, #24229; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 72230; CHECK-V7-FP-ELIM:   .cfi_endproc231 232; CHECK-THUMB-FP-LABEL: _Z4testiiiiiddddd:233; CHECK-THUMB-FP:   .cfi_startproc234; CHECK-THUMB-FP:   push   {r4, r5, r6, r7, lr}235; CHECK-THUMB-FP:   .cfi_def_cfa_offset 20236; CHECK-THUMB-FP:   .cfi_offset lr, -4237; CHECK-THUMB-FP:   .cfi_offset r7, -8238; CHECK-THUMB-FP:   .cfi_offset r6, -12239; CHECK-THUMB-FP:   .cfi_offset r5, -16240; CHECK-THUMB-FP:   .cfi_offset r4, -20241; CHECK-THUMB-FP:   add    r7, sp, #12242; CHECK-THUMB-FP:   .cfi_def_cfa r7, 8243; CHECK-THUMB-FP:   sub    sp, #60244; CHECK-THUMB-FP:   .cfi_endproc245 246; CHECK-THUMB-FP-ELIM-LABEL: _Z4testiiiiiddddd:247; CHECK-THUMB-FP-ELIM:   .cfi_startproc248; CHECK-THUMB-FP-ELIM:   push   {r4, r5, r6, r7, lr}249; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 20250; CHECK-THUMB-FP-ELIM:   .cfi_offset lr, -4251; CHECK-THUMB-FP-ELIM:   .cfi_offset r7, -8252; CHECK-THUMB-FP-ELIM:   .cfi_offset r6, -12253; CHECK-THUMB-FP-ELIM:   .cfi_offset r5, -16254; CHECK-THUMB-FP-ELIM:   .cfi_offset r4, -20255; CHECK-THUMB-FP-ELIM:   sub    sp, #52256; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 72257; CHECK-THUMB-FP-ELIM:   .cfi_endproc258 259; CHECK-THUMB-V7-FP-LABEL: _Z4testiiiiiddddd:260; CHECK-THUMB-V7-FP:   .cfi_startproc261; CHECK-THUMB-V7-FP:   push   {r7, lr}262; CHECK-THUMB-V7-FP:   .cfi_def_cfa_offset 8263; CHECK-THUMB-V7-FP:   .cfi_offset lr, -4264; CHECK-THUMB-V7-FP:   .cfi_offset r7, -8265; CHECK-THUMB-V7-FP:   mov    r7, sp266; CHECK-THUMB-V7-FP:   .cfi_def_cfa_register r7267; CHECK-THUMB-V7-FP:   vpush  {d8, d9, d10, d11, d12}268; CHECK-THUMB-V7-FP:   .cfi_offset d12, -16269; CHECK-THUMB-V7-FP:   .cfi_offset d11, -24270; CHECK-THUMB-V7-FP:   .cfi_offset d10, -32271; CHECK-THUMB-V7-FP:   .cfi_offset d9, -40272; CHECK-THUMB-V7-FP:   .cfi_offset d8, -48273; CHECK-THUMB-V7-FP:   sub    sp, #24274; CHECK-THUMB-V7-FP:   .cfi_endproc275 276; CHECK-THUMB-V7-FP-ELIM-LABEL: _Z4testiiiiiddddd:277; CHECK-THUMB-V7-FP-ELIM:   .cfi_startproc278; CHECK-THUMB-V7-FP-ELIM:   push   {r7, lr}279; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 8280; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset lr, -4281; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r7, -8282; CHECK-THUMB-V7-FP-ELIM:   vpush  {d8, d9, d10, d11, d12}283; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 48284; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d12, -16285; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d11, -24286; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d10, -32287; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d9, -40288; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d8, -48289; CHECK-THUMB-V7-FP-ELIM:   sub    sp, #24290; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 72291; CHECK-THUMB-V7-FP-ELIM:   .cfi_endproc292 293; CHECK-THUMB-V7-FP-NOIAS-LABEL: _Z4testiiiiiddddd:294; CHECK-THUMB-V7-FP-NOIAS:   .cfi_startproc295; CHECK-THUMB-V7-FP-NOIAS:   push   {r7, lr}296; CHECK-THUMB-V7-FP-NOIAS:   .cfi_def_cfa_offset 8297; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 14, -4298; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 7, -8299; CHECK-THUMB-V7-FP-NOIAS:   mov    r7, sp300; CHECK-THUMB-V7-FP-NOIAS:   .cfi_def_cfa_register 7301; CHECK-THUMB-V7-FP-NOIAS:   vpush  {d8, d9, d10, d11, d12}302; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 268, -16303; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 267, -24304; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 266, -32305; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 265, -40306; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 264, -48307; CHECK-THUMB-V7-FP-NOIAS:   sub    sp, #24308; CHECK-THUMB-V7-FP-NOIAS:   .cfi_endproc309 310;-------------------------------------------------------------------------------311; Test 2312;-------------------------------------------------------------------------------313 314declare void @throw_exception_2()315 316define void @test2() {317entry:318  call void @throw_exception_2()319  ret void320}321 322; CHECK-FP-LABEL: test2:323; CHECK-FP:   .cfi_startproc324; CHECK-FP:   push   {r11, lr}325; CHECK-FP:   .cfi_def_cfa_offset 8326; CHECK-FP:   .cfi_offset lr, -4327; CHECK-FP:   .cfi_offset r11, -8328; CHECK-FP:   mov    r11, sp329; CHECK-FP:   .cfi_def_cfa_register r11330; CHECK-FP:   pop    {r11, lr}331; CHECK-FP:   mov    pc, lr332; CHECK-FP:   .cfi_endproc333 334; CHECK-FP-ELIM-LABEL: test2:335; CHECK-FP-ELIM:   .cfi_startproc336; CHECK-FP-ELIM:   push  {r11, lr}337; CHECK-FP-ELIM:   .cfi_def_cfa_offset 8338; CHECK-FP-ELIM:   .cfi_offset lr, -4339; CHECK-FP-ELIM:   .cfi_offset r11, -8340; CHECK-FP-ELIM:   pop   {r11, lr}341; CHECK-FP-ELIM:   mov   pc, lr342; CHECK-FP-ELIM:   .cfi_endproc343 344; CHECK-V7-FP-LABEL: test2:345; CHECK-V7-FP:   .cfi_startproc346; CHECK-V7-FP:   push   {r11, lr}347; CHECK-V7-FP:   .cfi_def_cfa_offset 8348; CHECK-V7-FP:   .cfi_offset lr, -4349; CHECK-V7-FP:   .cfi_offset r11, -8350; CHECK-V7-FP:   mov    r11, sp351; CHECK-V7-FP:   .cfi_def_cfa_register r11352; CHECK-V7-FP:   pop    {r11, pc}353; CHECK-V7-FP:   .cfi_endproc354 355; CHECK-V7-FP-ELIM-LABEL: test2:356; CHECK-V7-FP-ELIM:   .cfi_startproc357; CHECK-V7-FP-ELIM:   push  {r11, lr}358; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 8359; CHECK-V7-FP-ELIM:   .cfi_offset lr, -4360; CHECK-V7-FP-ELIM:   .cfi_offset r11, -8361; CHECK-V7-FP-ELIM:   pop   {r11, pc}362; CHECK-V7-FP-ELIM:   .cfi_endproc363 364; CHECK-THUMB-FP-LABEL: test2:365; CHECK-THUMB-FP:   .cfi_startproc366; CHECK-THUMB-FP:   push   {r7, lr}367; CHECK-THUMB-FP:   .cfi_def_cfa_offset 8368; CHECK-THUMB-FP:   .cfi_offset lr, -4369; CHECK-THUMB-FP:   .cfi_offset r7, -8370; CHECK-THUMB-FP:   add    r7, sp, #0371; CHECK-THUMB-FP:   .cfi_def_cfa_register r7372; CHECK-THUMB-FP:   pop    {r7, pc}373; CHECK-THUMB-FP:   .cfi_endproc374 375; CHECK-THUMB-FP-ELIM-LABEL: test2:376; CHECK-THUMB-FP-ELIM:   .cfi_startproc377; CHECK-THUMB-FP-ELIM:   push  {r7, lr}378; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 8379; CHECK-THUMB-FP-ELIM:   .cfi_offset lr, -4380; CHECK-THUMB-FP-ELIM:   .cfi_offset r7, -8381; CHECK-THUMB-FP-ELIM:   pop   {r7, pc}382; CHECK-THUMB-FP-ELIM:   .cfi_endproc383 384; CHECK-THUMB-V7-FP-LABEL: test2:385; CHECK-THUMB-V7-FP:   .cfi_startproc386; CHECK-THUMB-V7-FP:   push   {r7, lr}387; CHECK-THUMB-V7-FP:   .cfi_def_cfa_offset 8388; CHECK-THUMB-V7-FP:   .cfi_offset lr, -4389; CHECK-THUMB-V7-FP:   .cfi_offset r7, -8390; CHECK-THUMB-V7-FP:   mov    r7, sp391; CHECK-THUMB-V7-FP:   .cfi_def_cfa_register r7392; CHECK-THUMB-V7-FP:   pop    {r7, pc}393; CHECK-THUMB-V7-FP:   .cfi_endproc394 395; CHECK-THUMB-V7-FP-ELIM-LABEL: test2:396; CHECK-THUMB-V7-FP-ELIM:   .cfi_startproc397; CHECK-THUMB-V7-FP-ELIM:   push  {r7, lr}398; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 8399; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset lr, -4400; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r7, -8401; CHECK-THUMB-V7-FP-ELIM:   pop   {r7, pc}402; CHECK-THUMB-V7-FP-ELIM:   .cfi_endproc403 404 405;-------------------------------------------------------------------------------406; Test 3407;-------------------------------------------------------------------------------408 409declare void @throw_exception_3(i32)410 411define i32 @test3(i32 %a, i32 %b, i32 %c, i32 %d,412                  i32 %e, i32 %f, i32 %g, i32 %h) {413entry:414  %add = add nsw i32 %b, %a415  %add1 = add nsw i32 %add, %c416  %add2 = add nsw i32 %add1, %d417  tail call void @throw_exception_3(i32 %add2)418  %add3 = add nsw i32 %f, %e419  %add4 = add nsw i32 %add3, %g420  %add5 = add nsw i32 %add4, %h421  tail call void @throw_exception_3(i32 %add5)422  %add6 = add nsw i32 %add5, %add2423  ret i32 %add6424}425 426; CHECK-FP-LABEL: test3:427; CHECK-FP:   .cfi_startproc428; CHECK-FP:   push   {r4, r5, r11, lr}429; CHECK-FP:   .cfi_def_cfa_offset 16430; CHECK-FP:   .cfi_offset lr, -4431; CHECK-FP:   .cfi_offset r11, -8432; CHECK-FP:   .cfi_offset r5, -12433; CHECK-FP:   .cfi_offset r4, -16434; CHECK-FP:   add    r11, sp, #8435; CHECK-FP:   .cfi_def_cfa r11, 8436; CHECK-FP:   pop    {r4, r5, r11, lr}437; CHECK-FP:   mov    pc, lr438; CHECK-FP:   .cfi_endproc439 440; CHECK-FP-ELIM-LABEL: test3:441; CHECK-FP-ELIM:   .cfi_startproc442; CHECK-FP-ELIM:   push  {r4, r5, r11, lr}443; CHECK-FP-ELIM:   .cfi_def_cfa_offset 16444; CHECK-FP-ELIM:   .cfi_offset lr, -4445; CHECK-FP-ELIM:   .cfi_offset r11, -8446; CHECK-FP-ELIM:   .cfi_offset r5, -12447; CHECK-FP-ELIM:   .cfi_offset r4, -16448; CHECK-FP-ELIM:   pop   {r4, r5, r11, lr}449; CHECK-FP-ELIM:   mov   pc, lr450; CHECK-FP-ELIM:   .cfi_endproc451 452; CHECK-V7-FP-LABEL: test3:453; CHECK-V7-FP:   .cfi_startproc454; CHECK-V7-FP:   push   {r4, r5, r11, lr}455; CHECK-V7-FP:   .cfi_def_cfa_offset 16456; CHECK-V7-FP:   .cfi_offset lr, -4457; CHECK-V7-FP:   .cfi_offset r11, -8458; CHECK-V7-FP:   .cfi_offset r5, -12459; CHECK-V7-FP:   .cfi_offset r4, -16460; CHECK-V7-FP:   add    r11, sp, #8461; CHECK-V7-FP:   .cfi_def_cfa r11, 8462; CHECK-V7-FP:   pop    {r4, r5, r11, pc}463; CHECK-V7-FP:   .cfi_endproc464 465; CHECK-V7-FP-ELIM-LABEL: test3:466; CHECK-V7-FP-ELIM:   .cfi_startproc467; CHECK-V7-FP-ELIM:   push  {r4, r5, r11, lr}468; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 16469; CHECK-V7-FP-ELIM:   .cfi_offset lr, -4470; CHECK-V7-FP-ELIM:   .cfi_offset r11, -8471; CHECK-V7-FP-ELIM:   .cfi_offset r5, -12472; CHECK-V7-FP-ELIM:   .cfi_offset r4, -16473; CHECK-V7-FP-ELIM:   pop   {r4, r5, r11, pc}474; CHECK-V7-FP-ELIM:   .cfi_endproc475 476; CHECK-THUMB-FP-LABEL: test3:477; CHECK-THUMB-FP:   .cfi_startproc478; CHECK-THUMB-FP:   push   {r4, r5, r7, lr}479; CHECK-THUMB-FP:   .cfi_def_cfa_offset 16480; CHECK-THUMB-FP:   .cfi_offset lr, -4481; CHECK-THUMB-FP:   .cfi_offset r7, -8482; CHECK-THUMB-FP:   .cfi_offset r5, -12483; CHECK-THUMB-FP:   .cfi_offset r4, -16484; CHECK-THUMB-FP:   add    r7, sp, #8485; CHECK-THUMB-FP:   .cfi_def_cfa r7, 8486; CHECK-THUMB-FP:   pop    {r4, r5, r7, pc}487; CHECK-THUMB-FP:   .cfi_endproc488 489; CHECK-THUMB-FP-ELIM-LABEL: test3:490; CHECK-THUMB-FP-ELIM:   .cfi_startproc491; CHECK-THUMB-FP-ELIM:   push  {r4, r5, r7, lr}492; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 16493; CHECK-THUMB-FP-ELIM:   .cfi_offset lr, -4494; CHECK-THUMB-FP-ELIM:   .cfi_offset r7, -8495; CHECK-THUMB-FP-ELIM:   .cfi_offset r5, -12496; CHECK-THUMB-FP-ELIM:   .cfi_offset r4, -16497; CHECK-THUMB-FP-ELIM:   pop   {r4, r5, r7, pc}498; CHECK-THUMB-FP-ELIM:   .cfi_endproc499 500; CHECK-THUMB-V7-FP-LABEL: test3:501; CHECK-THUMB-V7-FP:   .cfi_startproc502; CHECK-THUMB-V7-FP:   push   {r4, r5, r7, lr}503; CHECK-THUMB-V7-FP:   .cfi_def_cfa_offset 16504; CHECK-THUMB-V7-FP:   .cfi_offset lr, -4505; CHECK-THUMB-V7-FP:   .cfi_offset r7, -8506; CHECK-THUMB-V7-FP:   .cfi_offset r5, -12507; CHECK-THUMB-V7-FP:   .cfi_offset r4, -16508; CHECK-THUMB-V7-FP:   add    r7, sp, #8509; CHECK-THUMB-V7-FP:   .cfi_def_cfa r7, 8510; CHECK-THUMB-V7-FP:   pop    {r4, r5, r7, pc}511; CHECK-THUMB-V7-FP:   .cfi_endproc512 513; CHECK-THUMB-V7-FP-ELIM-LABEL: test3:514; CHECK-THUMB-V7-FP-ELIM:   .cfi_startproc515; CHECK-THUMB-V7-FP-ELIM:   push  {r4, r5, r7, lr}516; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 16517; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset lr, -4518; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r7, -8519; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r5, -12520; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r4, -16521; CHECK-THUMB-V7-FP-ELIM:   pop   {r4, r5, r7, pc}522; CHECK-THUMB-V7-FP-ELIM:   .cfi_endproc523 524 525;-------------------------------------------------------------------------------526; Test 4527;-------------------------------------------------------------------------------528 529define void @test4() nounwind "frame-pointer"="none" {530entry:531  ret void532}533 534; CHECK-FP-LABEL: test4:535; CHECK-FP:   mov pc, lr536; CHECK-FP-NOT:   .cfi_def_cfa_offset537 538; CHECK-FP-ELIM-LABEL: test4:539; CHECK-FP-ELIM:   mov pc, lr540; CHECK-FP-ELIM-NOT:   .cfi_def_cfa_offset541 542; CHECK-V7-FP-LABEL: test4:543; CHECK-V7-FP:   bx lr544; CHECK-V7-FP-NOT:   .cfi_def_cfa_offset545 546; CHECK-V7-FP-ELIM-LABEL: test4:547; CHECK-V7-FP-ELIM:   bx lr548; CHECK-V7-FP-ELIM-NOT:   .cfi_def_cfa_offset549 550; CHECK-THUMB-FP-LABEL: test4:551; CHECK-THUMB-FP:   bx lr552; CHECK-THUMB-FP-NOT:   .cfi_def_cfa_offset553 554; CHECK-THUMB-FP-ELIM-LABEL: test4:555; CHECK-THUMB-FP-ELIM:   bx lr556; CHECK-THUMB-FP-ELIM-NOT:   .cfi_def_cfa_offset557 558; CHECK-THUMB-V7-FP-LABEL: test4:559; CHECK-THUMB-V7-FP:   bx lr560; CHECK-THUMB-V7-FP-NOT:   .cfi_def_cfa_offset561 562; CHECK-THUMB-V7-FP-ELIM-LABEL: test4:563; CHECK-THUMB-V7-FP-ELIM:   bx lr564; CHECK-THUMB-V7-FP-ELIM-NOT:   .cfi_def_cfa_offset565 566