Skip to content

Commit b51b83f

Browse files
committed
[Attributor] Introduce the concept of query AAs
D106720 introduced features that did not work properly as we could add new queries after a fixpoint was reached and which could not be answered by the information gathered up to the fixpoint alone. As an alternative to D110078, which forced eager computation where we want to continue to be lazy, this patch fixes the problem. QueryAAs are AAs that allow lazy queries during their lifetime. They are never fixed if they have no outstanding dependences and always run as part of the updates in an iteration. To determine if we are done, all query AAs are asked if they received new queries, if not, we only need to consider updated AAs, as before. If new queries are present we go for another iteration. Differential Revision: https://reviews.llvm.org/D118669
1 parent 09802f8 commit b51b83f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1545
-2255
lines changed

llvm/include/llvm/Transforms/IPO/Attributor.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,6 +1377,9 @@ struct Attributor {
13771377
return AA;
13781378
}
13791379

1380+
/// Allows a query AA to request an update if a new query was received.
1381+
void registerForUpdate(AbstractAttribute &AA);
1382+
13801383
/// Explicitly record a dependence from \p FromAA to \p ToAA, that is if
13811384
/// \p FromAA changes \p ToAA should be updated as well.
13821385
///
@@ -2071,6 +2074,10 @@ struct Attributor {
20712074
/// Callback to get an OptimizationRemarkEmitter from a Function *.
20722075
Optional<OptimizationRemarkGetter> OREGetter;
20732076

2077+
/// Container with all the query AAs that requested an update via
2078+
/// registerForUpdate.
2079+
SmallSetVector<AbstractAttribute *, 16> QueryAAsAwaitingUpdate;
2080+
20742081
/// The name of the pass to emit remarks for.
20752082
const char *PassName = "";
20762083

@@ -2808,6 +2815,14 @@ struct AbstractAttribute : public IRPosition, public AADepGraphNode {
28082815
/// in the `updateImpl` method.
28092816
virtual void initialize(Attributor &A) {}
28102817

2818+
/// A query AA is always scheduled as long as we do updates because it does
2819+
/// lazy computation that cannot be determined to be done from the outside.
2820+
/// However, while query AAs will not be fixed if they do not have outstanding
2821+
/// dependences, we will only schedule them like other AAs. If a query AA that
2822+
/// received a new query it needs to request an update via
2823+
/// `Attributor::requestUpdateForAA`.
2824+
virtual bool isQueryAA() const { return false; }
2825+
28112826
/// Return the internal abstract state for inspection.
28122827
virtual StateType &getState() = 0;
28132828
virtual const StateType &getState() const = 0;
@@ -4615,6 +4630,9 @@ struct AAFunctionReachability
46154630

46164631
AAFunctionReachability(const IRPosition &IRP, Attributor &A) : Base(IRP) {}
46174632

4633+
/// See AbstractAttribute::isQueryAA.
4634+
bool isQueryAA() const override { return true; }
4635+
46184636
/// If the function represented by this possition can reach \p Fn.
46194637
virtual bool canReach(Attributor &A, const Function &Fn) const = 0;
46204638

llvm/lib/Transforms/IPO/Attributor.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1516,6 +1516,9 @@ void Attributor::runTillFixpoint() {
15161516
// Note that dependent ones are added above.
15171517
Worklist.clear();
15181518
Worklist.insert(ChangedAAs.begin(), ChangedAAs.end());
1519+
Worklist.insert(QueryAAsAwaitingUpdate.begin(),
1520+
QueryAAsAwaitingUpdate.end());
1521+
QueryAAsAwaitingUpdate.clear();
15191522

15201523
} while (!Worklist.empty() && (IterationCounter++ < MaxFixedPointIterations ||
15211524
VerifyMaxFixpointIterations));
@@ -1575,6 +1578,12 @@ void Attributor::runTillFixpoint() {
15751578
}
15761579
}
15771580

1581+
void Attributor::registerForUpdate(AbstractAttribute &AA) {
1582+
assert(AA.isQueryAA() &&
1583+
"Non-query AAs should not be required to register for updates!");
1584+
QueryAAsAwaitingUpdate.insert(&AA);
1585+
}
1586+
15781587
ChangeStatus Attributor::manifestAttributes() {
15791588
TimeTraceScope TimeScope("Attributor::manifestAttributes");
15801589
size_t NumFinalAAs = DG.SyntheticRoot.Deps.size();
@@ -1980,7 +1989,7 @@ ChangeStatus Attributor::updateAA(AbstractAttribute &AA) {
19801989
/* CheckBBLivenessOnly */ true))
19811990
CS = AA.update(*this);
19821991

1983-
if (DV.empty()) {
1992+
if (!AA.isQueryAA() && DV.empty()) {
19841993
// If the attribute did not query any non-fix information, the state
19851994
// will not change and we can indicate that right away.
19861995
AAState.indicateOptimisticFixpoint();

llvm/lib/Transforms/IPO/AttributorAttributes.cpp

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9607,13 +9607,18 @@ struct AAFunctionReachabilityFunction : public AAFunctionReachability {
96079607
return Change;
96089608
}
96099609

9610-
bool isReachable(Attributor &A, const AAFunctionReachability &AA,
9610+
bool isReachable(Attributor &A, AAFunctionReachability &AA,
96119611
ArrayRef<const AACallEdges *> AAEdgesList,
96129612
const Function &Fn) {
96139613
Optional<bool> Cached = isCachedReachable(Fn);
96149614
if (Cached.hasValue())
96159615
return Cached.getValue();
96169616

9617+
// The query was not cached, thus it is new. We need to request an update
9618+
// explicitly to make sure this the information is properly run to a
9619+
// fixpoint.
9620+
A.registerForUpdate(AA);
9621+
96179622
// We need to assume that this function can't reach Fn to prevent
96189623
// an infinite loop if this function is recursive.
96199624
Unreachable.insert(&Fn);
@@ -9727,6 +9732,9 @@ struct AAFunctionReachabilityFunction : public AAFunctionReachability {
97279732
: AAFunctionReachability(IRP, A) {}
97289733

97299734
bool canReach(Attributor &A, const Function &Fn) const override {
9735+
if (!isValidState())
9736+
return true;
9737+
97309738
const AACallEdges &AAEdges =
97319739
A.getAAFor<AACallEdges>(*this, getIRPosition(), DepClassTy::REQUIRED);
97329740

@@ -9735,15 +9743,18 @@ struct AAFunctionReachabilityFunction : public AAFunctionReachability {
97359743
// a const_cast.
97369744
// This is a hack for us to be able to cache queries.
97379745
auto *NonConstThis = const_cast<AAFunctionReachabilityFunction *>(this);
9738-
bool Result =
9739-
NonConstThis->WholeFunction.isReachable(A, *this, {&AAEdges}, Fn);
9746+
bool Result = NonConstThis->WholeFunction.isReachable(A, *NonConstThis,
9747+
{&AAEdges}, Fn);
97409748

97419749
return Result;
97429750
}
97439751

97449752
/// Can \p CB reach \p Fn
97459753
bool canReach(Attributor &A, CallBase &CB,
97469754
const Function &Fn) const override {
9755+
if (!isValidState())
9756+
return true;
9757+
97479758
const AACallEdges &AAEdges = A.getAAFor<AACallEdges>(
97489759
*this, IRPosition::callsite_function(CB), DepClassTy::REQUIRED);
97499760

@@ -9754,14 +9765,17 @@ struct AAFunctionReachabilityFunction : public AAFunctionReachability {
97549765
auto *NonConstThis = const_cast<AAFunctionReachabilityFunction *>(this);
97559766
QueryResolver &CBQuery = NonConstThis->CBQueries[&CB];
97569767

9757-
bool Result = CBQuery.isReachable(A, *this, {&AAEdges}, Fn);
9768+
bool Result = CBQuery.isReachable(A, *NonConstThis, {&AAEdges}, Fn);
97589769

97599770
return Result;
97609771
}
97619772

97629773
bool instructionCanReach(Attributor &A, const Instruction &Inst,
97639774
const Function &Fn,
97649775
bool UseBackwards) const override {
9776+
if (!isValidState())
9777+
return true;
9778+
97659779
const auto &Reachability = &A.getAAFor<AAReachability>(
97669780
*this, IRPosition::function(*getAssociatedFunction()),
97679781
DepClassTy::REQUIRED);
@@ -9777,7 +9791,7 @@ struct AAFunctionReachabilityFunction : public AAFunctionReachability {
97779791
if (!AllKnown)
97789792
InstQSet.CanReachUnknownCallee = true;
97799793

9780-
bool ForwardsResult = InstQSet.isReachable(A, *this, CallEdges, Fn);
9794+
bool ForwardsResult = InstQSet.isReachable(A, *NonConstThis, CallEdges, Fn);
97819795
if (ForwardsResult)
97829796
return true;
97839797
// We are done.

llvm/test/Transforms/Attributor/ArgumentPromotion/2008-07-02-array-indexing.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals
2-
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3-
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
2+
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3+
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
44
; RUN: opt -attributor-cgscc -enable-new-pm=0 -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_NPM,IS__CGSCC____,IS________OPM,IS__CGSCC_OPM
55
; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_OPM,IS__CGSCC____,IS________NPM,IS__CGSCC_NPM
66
; PR2498

llvm/test/Transforms/Attributor/ArgumentPromotion/2008-09-07-CGUpdate.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals
2-
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3-
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
2+
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3+
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
44
; RUN: opt -attributor-cgscc -enable-new-pm=0 -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_NPM,IS__CGSCC____,IS________OPM,IS__CGSCC_OPM
55
; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_OPM,IS__CGSCC____,IS________NPM,IS__CGSCC_NPM
66

llvm/test/Transforms/Attributor/ArgumentPromotion/2008-09-08-CGUpdateSelfEdge.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals
2-
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3-
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
2+
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3+
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
44
; RUN: opt -attributor-cgscc -enable-new-pm=0 -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_NPM,IS__CGSCC____,IS________OPM,IS__CGSCC_OPM
55
; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_OPM,IS__CGSCC____,IS________NPM,IS__CGSCC_NPM
66

llvm/test/Transforms/Attributor/ArgumentPromotion/X86/attributes.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ define void @no_promote(<4 x i64>* %arg) #1 {
5858
; IS__TUNIT_NPM-NEXT: store <4 x i64> [[TMP4]], <4 x i64>* [[ARG]], align 2
5959
; IS__TUNIT_NPM-NEXT: ret void
6060
;
61-
; IS__CGSCC_OPM: Function Attrs: argmemonly nofree norecurse nosync nounwind uwtable willreturn
61+
; IS__CGSCC_OPM: Function Attrs: argmemonly nofree nosync nounwind uwtable willreturn
6262
; IS__CGSCC_OPM-LABEL: define {{[^@]+}}@no_promote
6363
; IS__CGSCC_OPM-SAME: (<4 x i64>* nocapture nofree noundef nonnull writeonly align 2 dereferenceable(32) [[ARG:%.*]]) #[[ATTR1:[0-9]+]] {
6464
; IS__CGSCC_OPM-NEXT: bb:
@@ -71,7 +71,7 @@ define void @no_promote(<4 x i64>* %arg) #1 {
7171
; IS__CGSCC_OPM-NEXT: store <4 x i64> [[TMP4]], <4 x i64>* [[ARG]], align 2
7272
; IS__CGSCC_OPM-NEXT: ret void
7373
;
74-
; IS__CGSCC_NPM: Function Attrs: argmemonly nofree norecurse nosync nounwind uwtable willreturn
74+
; IS__CGSCC_NPM: Function Attrs: argmemonly nofree nosync nounwind uwtable willreturn
7575
; IS__CGSCC_NPM-LABEL: define {{[^@]+}}@no_promote
7676
; IS__CGSCC_NPM-SAME: (<4 x i64>* nocapture nofree noundef nonnull writeonly align 2 dereferenceable(32) [[ARG:%.*]]) #[[ATTR1:[0-9]+]] {
7777
; IS__CGSCC_NPM-NEXT: bb:
@@ -210,7 +210,7 @@ attributes #2 = { argmemonly nounwind }
210210
; IS__TUNIT____: attributes #[[ATTR4:[0-9]+]] = { nofree nosync nounwind willreturn }
211211
;.
212212
; IS__CGSCC____: attributes #[[ATTR0:[0-9]+]] = { argmemonly inlinehint nofree norecurse nosync nounwind uwtable willreturn "target-features"="+avx2" }
213-
; IS__CGSCC____: attributes #[[ATTR1:[0-9]+]] = { argmemonly nofree norecurse nosync nounwind uwtable willreturn }
213+
; IS__CGSCC____: attributes #[[ATTR1:[0-9]+]] = { argmemonly nofree nosync nounwind uwtable willreturn }
214214
; IS__CGSCC____: attributes #[[ATTR2:[0-9]+]] = { argmemonly nofree nounwind willreturn writeonly }
215215
; IS__CGSCC____: attributes #[[ATTR3:[0-9]+]] = { willreturn writeonly }
216216
; IS__CGSCC____: attributes #[[ATTR4:[0-9]+]] = { nosync nounwind willreturn }

llvm/test/Transforms/Attributor/ArgumentPromotion/aggregate-promote.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals
2-
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3-
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
2+
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3+
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
44
; RUN: opt -attributor-cgscc -enable-new-pm=0 -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_NPM,IS__CGSCC____,IS________OPM,IS__CGSCC_OPM
55
; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_OPM,IS__CGSCC____,IS________NPM,IS__CGSCC_NPM
66

llvm/test/Transforms/Attributor/ArgumentPromotion/attrs.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals
2-
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3-
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
2+
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3+
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
44
; RUN: opt -attributor-cgscc -enable-new-pm=0 -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_NPM,IS__CGSCC____,IS________OPM,IS__CGSCC_OPM
55
; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_OPM,IS__CGSCC____,IS________NPM,IS__CGSCC_NPM
66

llvm/test/Transforms/Attributor/ArgumentPromotion/byval-2.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals
2-
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3-
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=1 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
2+
; RUN: opt -attributor -enable-new-pm=0 -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_NPM,NOT_CGSCC_OPM,NOT_TUNIT_NPM,IS__TUNIT____,IS________OPM,IS__TUNIT_OPM
3+
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-max-iterations-verify -attributor-annotate-decl-cs -attributor-max-iterations=2 -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_CGSCC_OPM,NOT_CGSCC_NPM,NOT_TUNIT_OPM,IS__TUNIT____,IS________NPM,IS__TUNIT_NPM
44
; RUN: opt -attributor-cgscc -enable-new-pm=0 -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_NPM,IS__CGSCC____,IS________OPM,IS__CGSCC_OPM
55
; RUN: opt -aa-pipeline=basic-aa -passes=attributor-cgscc -attributor-manifest-internal -attributor-annotate-decl-cs -S < %s | FileCheck %s --check-prefixes=CHECK,NOT_TUNIT_NPM,NOT_TUNIT_OPM,NOT_CGSCC_OPM,IS__CGSCC____,IS________NPM,IS__CGSCC_NPM
66

0 commit comments

Comments
 (0)