Index: llvm/test/CodeGen/M68k/link-unlnk.ll =================================================================== --- llvm/test/CodeGen/M68k/link-unlnk.ll +++ llvm/test/CodeGen/M68k/link-unlnk.ll @@ -94,3 +94,36 @@ ret i32 %res7 } + +define i32 @test_gep() { +; FP-LABEL: test_gep: +; FP: .cfi_startproc +; FP-NEXT: ; %bb.0: ; %entry +; FP-NEXT: link.w %a6, #-256 +; FP-NEXT: .cfi_def_cfa_offset -8 +; FP-NEXT: .cfi_offset %a6, -8 +; FP-NEXT: .cfi_def_cfa_register %a6 +; FP-NEXT: move.l #21, (-4,%a6) +; FP-NEXT: move.l #12, (-256,%a6) +; FP-NEXT: move.l #0, %d0 +; FP-NEXT: unlk %a6 +; FP-NEXT: rts +; +; NO-FP-LABEL: test_gep: +; NO-FP: .cfi_startproc +; NO-FP-NEXT: ; %bb.0: ; %entry +; NO-FP-NEXT: suba.l #256, %sp +; NO-FP-NEXT: .cfi_def_cfa_offset -260 +; NO-FP-NEXT: move.l #21, (252,%sp) +; NO-FP-NEXT: move.l #12, (0,%sp) +; NO-FP-NEXT: move.l #0, %d0 +; NO-FP-NEXT: adda.l #256, %sp +; NO-FP-NEXT: rts +entry: + %arr = alloca [8 x [8 x i32]] + %ptr1 = getelementptr [8 x i32], ptr %arr, i64 0, i64 0 + store i32 12, i32 * %ptr1 + %ptr2 = getelementptr [8 x i32], ptr %arr, i64 7, i64 7 + store i32 21, i32 * %ptr2 + ret i32 0 +}