mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-07-21 18:29:45 +00:00
Disable the main feature of 130180, the elimination of loads that are
redundant with partially-aliasing loads. When computing what portion of a clobbering load value is needed, it doesn't consider phi-translation which may have occurred between the clobbing load and the redundant load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132631 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
baddf6c8b0
commit
a3351a0e5d
@ -374,10 +374,16 @@ getPointerDependencyFrom(const AliasAnalysis::Location &MemLoc, bool isLoad,
|
|||||||
if (R == AliasAnalysis::MustAlias)
|
if (R == AliasAnalysis::MustAlias)
|
||||||
return MemDepResult::getDef(Inst);
|
return MemDepResult::getDef(Inst);
|
||||||
|
|
||||||
|
#if 0 // FIXME: Temporarily disabled. GVN is cleverly rewriting loads
|
||||||
|
// in terms of clobbering loads, but since it does this by looking
|
||||||
|
// at the clobbering load directly, it doesn't know about any
|
||||||
|
// phi translation that may have happened along the way.
|
||||||
|
|
||||||
// If we have a partial alias, then return this as a clobber for the
|
// If we have a partial alias, then return this as a clobber for the
|
||||||
// client to handle.
|
// client to handle.
|
||||||
if (R == AliasAnalysis::PartialAlias)
|
if (R == AliasAnalysis::PartialAlias)
|
||||||
return MemDepResult::getClobber(Inst);
|
return MemDepResult::getClobber(Inst);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Random may-alias loads don't depend on each other without a
|
// Random may-alias loads don't depend on each other without a
|
||||||
// dependence.
|
// dependence.
|
||||||
|
@ -562,14 +562,14 @@ entry:
|
|||||||
%add = add nsw i32 %tmp2, %conv
|
%add = add nsw i32 %tmp2, %conv
|
||||||
ret i32 %add
|
ret i32 %add
|
||||||
|
|
||||||
; CHECK: @load_load_partial_alias
|
; TEMPORARILYDISABLED: @load_load_partial_alias
|
||||||
; CHECK: load i32*
|
; TEMPORARILYDISABLED: load i32*
|
||||||
; CHECK-NOT: load
|
; TEMPORARILYDISABLED-NOT: load
|
||||||
; CHECK: lshr i32 {{.*}}, 8
|
; TEMPORARILYDISABLED: lshr i32 {{.*}}, 8
|
||||||
; CHECK-NOT: load
|
; TEMPORARILYDISABLED-NOT: load
|
||||||
; CHECK: trunc i32 {{.*}} to i8
|
; TEMPORARILYDISABLED: trunc i32 {{.*}} to i8
|
||||||
; CHECK-NOT: load
|
; TEMPORARILYDISABLED-NOT: load
|
||||||
; CHECK: ret i32
|
; TEMPORARILYDISABLED: ret i32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -589,10 +589,10 @@ land.lhs.true: ; preds = %entry
|
|||||||
|
|
||||||
if.end:
|
if.end:
|
||||||
ret i32 52
|
ret i32 52
|
||||||
; CHECK: @load_load_partial_alias_cross_block
|
; TEMPORARILY_DISABLED: @load_load_partial_alias_cross_block
|
||||||
; CHECK: land.lhs.true:
|
; TEMPORARILY_DISABLED: land.lhs.true:
|
||||||
; CHECK-NOT: load i8
|
; TEMPORARILY_DISABLED-NOT: load i8
|
||||||
; CHECK: ret i32 %conv6
|
; TEMPORARILY_DISABLED: ret i32 %conv6
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user