brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · af766fd Raw
68 lines · plain
1; pr23772 - [ARM] r226200 can emit illegal thumb2 instruction: "sub sp, r12, #80"2; RUN: llc -mcpu=cortex-m3 -O3 -filetype=asm -o - %s | FileCheck %s3; CHECK-NOT: sub{{.*}} sp, r{{.*}}, #4; CHECK:     .fnend5; TODO: Missed optimization. The three instructions generated to subtract SP can be converged to a single one6target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:32"7target triple = "thumbv7m-unknown-unknown"8%B = type {ptr}9%R = type {i32}10%U = type {ptr, i8, i8}11%E = type {ptr, ptr}12%X = type {i32, i8, i8}13declare external ptr @memalloc(i32, i32, i32)14declare external void @memfree(ptr, i32, i32)15define void @foo(ptr %pb$, ptr %pr$) nounwind {16L.0:17	%pb = alloca ptr18	%pr = alloca ptr19	store ptr %pb$, ptr %pb20	store ptr %pr$, ptr %pr21	%pe = alloca ptr22	%0 = load ptr, ptr %pb23	store ptr %0, ptr %pe24	%1 = load ptr, ptr %pr25	%2 = load i32, ptr %126	switch i32 %2, label %L.1 [27		i32 1, label %L.328	]29L.3:30	%px = alloca ptr31	%3 = load ptr, ptr %pr32	store ptr %3, ptr %px33	%4 = load ptr, ptr %px34	%5 = load i32, ptr %435	%6 = icmp ne i32 %5, 036	br i1 %6, label %L.5, label %L.437L.5:38	%pu = alloca ptr39	%7 = call ptr @memalloc(i32 8, i32 4, i32 0)40	store ptr %7, ptr %pu41	%8 = load ptr, ptr %px42	%9 = getelementptr %X, ptr %8, i32 0, i32 143	%10 = load i8, ptr %944	%11 = load ptr, ptr %pu45	%12 = getelementptr %U, ptr %11, i32 0, i32 146	store i8 %10, ptr %1247	%13 = load ptr, ptr %pe48	%14 = getelementptr %E, ptr %13, i32 0, i32 149	%15 = load ptr, ptr %1450	%16 = load ptr, ptr %pu51	store ptr %15, ptr %1652	%17 = load ptr, ptr %pu53	%18 = load ptr, ptr %pe54	%19 = getelementptr %E, ptr %18, i32 0, i32 155	store ptr %17, ptr %1956	br label %L.457L.4:58	%20 = load ptr, ptr %px59	call void @memfree(ptr %20, i32 8, i32 0)60	br label %L.261L.1:62	br label %L.263L.2:64	br label %return65return:66	ret void67}68