; RUN: llc -mtriple=arm64-apple-ios -o - %s -fast-isel=1 -O0 | FileCheck %s ; The zext can be folded into the load and removed, but doing so can invalidate ; pointers internal to FastISel and cause a crash so it must be done carefully. define i32 @test() { ; CHECK-LABEL: test: ; CHECK: ldrh ; CHECK: bl _callee ; CHECK-NOT: uxth entry: store i32 undef, i32* undef, align 4 %t81 = load i16, i16* undef, align 2 call void @callee() %t82 = zext i16 %t81 to i32 %t83 = shl i32 %t82, 16 %t84 = or i32 undef, %t83 br label %end end: %val = phi i32 [%t84, %entry] ret i32 %val } declare void @callee()