@@ -538,4 +538,72 @@ define i32 @f9(i64 %i) local_unnamed_addr #0 {
538538 ret i32 %c
539539}
540540
541+ ; alloca < probe_size, align < probe_size, alloca + align > probe_size
542+ define i32 @f10 (i64 %i ) local_unnamed_addr #0 {
543+ ; RV64I-LABEL: f10:
544+ ; RV64I: # %bb.0:
545+ ; RV64I-NEXT: addi sp, sp, -2032
546+ ; RV64I-NEXT: .cfi_def_cfa_offset 2032
547+ ; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill
548+ ; RV64I-NEXT: sd s0, 2016(sp) # 8-byte Folded Spill
549+ ; RV64I-NEXT: .cfi_offset ra, -8
550+ ; RV64I-NEXT: .cfi_offset s0, -16
551+ ; RV64I-NEXT: addi s0, sp, 2032
552+ ; RV64I-NEXT: .cfi_def_cfa s0, 0
553+ ; RV64I-NEXT: addi sp, sp, -2048
554+ ; RV64I-NEXT: addi sp, sp, -1040
555+ ; RV64I-NEXT: andi sp, sp, -1024
556+ ; RV64I-NEXT: sd zero, 0(sp)
557+ ; RV64I-NEXT: slli a0, a0, 2
558+ ; RV64I-NEXT: addi a1, sp, 1024
559+ ; RV64I-NEXT: add a0, a1, a0
560+ ; RV64I-NEXT: li a1, 1
561+ ; RV64I-NEXT: sw a1, 0(a0)
562+ ; RV64I-NEXT: lw a0, 1024(sp)
563+ ; RV64I-NEXT: addi sp, s0, -2032
564+ ; RV64I-NEXT: .cfi_def_cfa sp, 2032
565+ ; RV64I-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload
566+ ; RV64I-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload
567+ ; RV64I-NEXT: .cfi_restore ra
568+ ; RV64I-NEXT: .cfi_restore s0
569+ ; RV64I-NEXT: addi sp, sp, 2032
570+ ; RV64I-NEXT: .cfi_def_cfa_offset 0
571+ ; RV64I-NEXT: ret
572+ ;
573+ ; RV32I-LABEL: f10:
574+ ; RV32I: # %bb.0:
575+ ; RV32I-NEXT: addi sp, sp, -2032
576+ ; RV32I-NEXT: .cfi_def_cfa_offset 2032
577+ ; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill
578+ ; RV32I-NEXT: sw s0, 2024(sp) # 4-byte Folded Spill
579+ ; RV32I-NEXT: .cfi_offset ra, -4
580+ ; RV32I-NEXT: .cfi_offset s0, -8
581+ ; RV32I-NEXT: addi s0, sp, 2032
582+ ; RV32I-NEXT: .cfi_def_cfa s0, 0
583+ ; RV32I-NEXT: addi sp, sp, -2048
584+ ; RV32I-NEXT: addi sp, sp, -1040
585+ ; RV32I-NEXT: andi sp, sp, -1024
586+ ; RV32I-NEXT: sw zero, 0(sp)
587+ ; RV32I-NEXT: slli a0, a0, 2
588+ ; RV32I-NEXT: addi a1, sp, 1024
589+ ; RV32I-NEXT: add a0, a1, a0
590+ ; RV32I-NEXT: li a1, 1
591+ ; RV32I-NEXT: sw a1, 0(a0)
592+ ; RV32I-NEXT: lw a0, 1024(sp)
593+ ; RV32I-NEXT: addi sp, s0, -2032
594+ ; RV32I-NEXT: .cfi_def_cfa sp, 2032
595+ ; RV32I-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload
596+ ; RV32I-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload
597+ ; RV32I-NEXT: .cfi_restore ra
598+ ; RV32I-NEXT: .cfi_restore s0
599+ ; RV32I-NEXT: addi sp, sp, 2032
600+ ; RV32I-NEXT: .cfi_def_cfa_offset 0
601+ ; RV32I-NEXT: ret
602+ %a = alloca i32 , i32 1000 , align 1024
603+ %b = getelementptr inbounds i32 , ptr %a , i64 %i
604+ store volatile i32 1 , ptr %b
605+ %c = load volatile i32 , ptr %a
606+ ret i32 %c
607+ }
608+
541609attributes #0 = { "probe-stack" ="inline-asm" }
0 commit comments