brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 6c4dc51 Raw
33 lines · plain
1; RUN: llc < %s -mtriple=avr | FileCheck %s2 3@ui1 = protected local_unnamed_addr global i64 zeroinitializer, align 84@ui2 = protected local_unnamed_addr global i64 zeroinitializer, align 85@failed = private unnamed_addr addrspace(1) constant [12 x i8] c"test failed\00"6@stats2 = external protected global i16, align 17 8; CHECK-LABEL: main:9define i32 @main() addrspace(1) {10entry:11  store i64 94, ptr @ui1, align 812  store i64 53, ptr @ui2, align 813  tail call addrspace(1) void @foo(i16 ptrtoint (ptr addrspace(1) @failed to i16), i16 11, i8 2, i16 32, ptr @stats2)14  %11 = load i64, ptr @ui1, align 815  %12 = load i64, ptr @ui2, align 816 17; COM: CHECK: call __udivdi318  %15 = udiv i64 %11, %1219 20; look for the buggy pattern where r30/r31 are being clobbered, corrupting the stack pointer21; CHECK-NOT: std  Z+{{[1-9]+}}, r30 22; CHECK-NOT: std  Z+{{[1-9]+}}, r3123 24; CHECK: call expect25  tail call addrspace(1) void @expect(i64 %15, i64 1, i16 ptrtoint (ptr addrspace(1) @failed to i16), i16 11, i8 2, i16 33)26 27; CHECK: ret28  ret i32 029}30 31declare protected void @expect(i64, i64, i16, i16, i8, i16) local_unnamed_addr addrspace(1) #032declare protected void @foo(i16, i16, i8, i16, i16) local_unnamed_addr addrspace(1) #033