mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
Don't propagate dereferenceable attribute through gc.relocate in InstCombine
Reviewed By: reames Differential Revision: http://reviews.llvm.org/D16143 llvm-svn: 260509
This commit is contained in:
parent
50853c0d36
commit
f8c51ed6a0
@ -1850,12 +1850,6 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
|
||||
// isKnownNonNull -> nonnull attribute
|
||||
if (isKnownNonNullAt(DerivedPtr, II, DT, TLI))
|
||||
II->addAttribute(AttributeSet::ReturnIndex, Attribute::NonNull);
|
||||
|
||||
// isDereferenceablePointer -> deref attribute
|
||||
if (isDereferenceablePointer(DerivedPtr, DL))
|
||||
if (Argument *A = dyn_cast<Argument>(DerivedPtr))
|
||||
II->addDereferenceableAttr(AttributeSet::ReturnIndex,
|
||||
A->getDereferenceableBytes());
|
||||
}
|
||||
|
||||
// TODO: bitcast(relocate(p)) -> relocate(bitcast(p))
|
||||
|
@ -9,17 +9,6 @@ declare zeroext i1 @return_i1()
|
||||
declare token @llvm.experimental.gc.statepoint.p0f_i1f(i64, i32, i1 ()*, i32, i32, ...)
|
||||
declare i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token, i32, i32)
|
||||
|
||||
define i32 addrspace(1)* @deref(i32 addrspace(1)* dereferenceable(8) %dparam) gc "statepoint-example" {
|
||||
; Checks that a dereferenceabler pointer
|
||||
; CHECK-LABEL: @deref
|
||||
; CHECK: call dereferenceable(8)
|
||||
entry:
|
||||
%load = load i32, i32 addrspace(1)* %dparam
|
||||
%tok = tail call token (i64, i32, i1 ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_i1f(i64 0, i32 0, i1 ()* @return_i1, i32 0, i32 0, i32 0, i32 0, i32 addrspace(1)* %dparam)
|
||||
%relocate = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %tok, i32 7, i32 7)
|
||||
ret i32 addrspace(1)* %relocate
|
||||
}
|
||||
|
||||
define i32 @explicit_nonnull(i32 addrspace(1)* nonnull %dparam) gc "statepoint-example" {
|
||||
; Checks that a nonnull pointer
|
||||
; CHECK-LABEL: @explicit_nonnull
|
||||
|
Loading…
Reference in New Issue
Block a user