
This patch adds default attributes to many intrinsics and the WillReturn attribute to some as well. The defaults include WillReturn. The WillReturn attribute is relevant for dead code elimination as intrinsics without WillReturn are assumed to have side effects and cannot be removed even if their return value is unused. It is also relevant for potential changes to SDAG behavior regarding treatment of intrinsics that function as loads.
34 lines
974 B
LLVM
34 lines
974 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
|
|
; RUN: opt -S < %s -passes=dce | FileCheck %s
|
|
|
|
declare <16 x i8> @llvm.s390.vlbb(ptr, i32)
|
|
declare <16 x i8> @llvm.s390.vll(i32, ptr)
|
|
declare <16 x i8> @llvm.s390.vlrl(i32, ptr)
|
|
|
|
define void @test_llvm_s390.vlbb(ptr %a) {
|
|
; CHECK-LABEL: define void @test_llvm_s390.vlbb(
|
|
; CHECK-SAME: ptr [[A:%.*]]) {
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
%v = call <16 x i8> @llvm.s390.vlbb(ptr %a, i32 8)
|
|
ret void
|
|
}
|
|
|
|
define void @test_llvm_s390.vll(i32 %a, ptr %b) {
|
|
; CHECK-LABEL: define void @test_llvm_s390.vll(
|
|
; CHECK-SAME: i32 [[A:%.*]], ptr [[B:%.*]]) {
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
%v = call <16 x i8> @llvm.s390.vll(i32 %a, ptr %b)
|
|
ret void
|
|
}
|
|
|
|
define void @test_llvm_s390.vlrl(i32 %a, ptr %b) {
|
|
; CHECK-LABEL: define void @test_llvm_s390.vlrl(
|
|
; CHECK-SAME: i32 [[A:%.*]], ptr [[B:%.*]]) {
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
%v = call <16 x i8> @llvm.s390.vlrl(i32 %a, ptr %b)
|
|
ret void
|
|
}
|