forked from OSchip/llvm-project
[Attributor] Implement AANoAliasCallSiteArgument initialization
Summary: This patch adds an appropriate `initialize` method for `AANoAliasCallSiteArgument`. Reviewers: jdoerfert, sstefan1 Reviewed By: jdoerfert Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66927 llvm-svn: 370456
This commit is contained in:
parent
3b08a61f7e
commit
6381b143f6
|
@ -1592,8 +1592,10 @@ struct AANoAliasCallSiteArgument final : AANoAliasImpl {
|
|||
|
||||
/// See AbstractAttribute::initialize(...).
|
||||
void initialize(Attributor &A) override {
|
||||
// TODO: It isn't sound to initialize as the same with `AANoAliasImpl`
|
||||
// because `noalias` may not be valid in the current position.
|
||||
// See callsite argument attribute and callee argument attribute.
|
||||
ImmutableCallSite ICS(&getAnchorValue());
|
||||
if (ICS.paramHasAttr(getArgNo(), Attribute::NoAlias))
|
||||
indicateOptimisticFixpoint();
|
||||
}
|
||||
|
||||
/// See AbstractAttribute::updateImpl(...).
|
||||
|
|
|
@ -142,8 +142,7 @@ define i8* @test8(i32* %0) nounwind uwtable {
|
|||
; TEST 9
|
||||
; Simple Argument Test
|
||||
define internal void @test9(i8* %a, i8* %b) {
|
||||
; FIXME: missing noalias
|
||||
; CHECK: define internal void @test9(i8* %a, i8* %b)
|
||||
; CHECK: define internal void @test9(i8* noalias %a, i8* %b)
|
||||
ret void
|
||||
}
|
||||
define void @test9_helper(i8* %a, i8* %b) {
|
||||
|
@ -156,12 +155,18 @@ define void @test9_helper(i8* %a, i8* %b) {
|
|||
; TEST 10
|
||||
; Simple CallSite Test
|
||||
|
||||
declare void @test10_helper(i8* %a)
|
||||
declare void @test10_helper_1(i8* %a)
|
||||
define void @test10_helper_2(i8* noalias %a) {
|
||||
ret void
|
||||
}
|
||||
define void @test10(i8* noalias %a) {
|
||||
; CHECK: define void @test10(i8* noalias %a)
|
||||
; FIXME: missing noalias
|
||||
; CHECK-NEXT: tail call void @test10_helper(i8* %a)
|
||||
tail call void @test10_helper(i8* %a)
|
||||
; CHECK-NEXT: tail call void @test10_helper_1(i8* %a)
|
||||
tail call void @test10_helper_1(i8* %a)
|
||||
|
||||
; CHECK-NEXT: tail call void @test10_helper_2(i8* noalias %a)
|
||||
tail call void @test10_helper_2(i8* %a)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue