mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-03 11:08:32 +00:00
[InstSimplify] Replace calls to null with undef
Calling null is undefined behavior, we can simplify the resulting value to undef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273777 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ae15013971
commit
35fad14a31
@ -4009,7 +4009,8 @@ static Value *SimplifyCall(Value *V, IterTy ArgBegin, IterTy ArgEnd,
|
||||
FunctionType *FTy = cast<FunctionType>(Ty);
|
||||
|
||||
// call undef -> undef
|
||||
if (isa<UndefValue>(V))
|
||||
// call null -> undef
|
||||
if (isa<UndefValue>(V) || isa<ConstantPointerNull>(V))
|
||||
return UndefValue::get(FTy->getReturnType());
|
||||
|
||||
Function *F = dyn_cast<Function>(V);
|
||||
|
@ -187,4 +187,20 @@ cast.end: ; preds = %cast.notnull, %entr
|
||||
; CHECK: br i1 %cmp, label %cast.end, label %cast.notnull
|
||||
}
|
||||
|
||||
define i32 @call_null() {
|
||||
entry:
|
||||
%call = call i32 null()
|
||||
ret i32 %call
|
||||
}
|
||||
; CHECK-LABEL: define i32 @call_null(
|
||||
; CHECK: ret i32 undef
|
||||
|
||||
define i32 @call_undef() {
|
||||
entry:
|
||||
%call = call i32 undef()
|
||||
ret i32 %call
|
||||
}
|
||||
; CHECK-LABEL: define i32 @call_undef(
|
||||
; CHECK: ret i32 undef
|
||||
|
||||
declare noalias i8* @malloc(i64)
|
||||
|
Loading…
x
Reference in New Issue
Block a user