forked from OSchip/llvm-project
[Attributor] Add helper class to compose two structured deduction.
Summary: This patch introduces a generic way to compose two structured deductions. This will be used for composing generic deduction with `MustBeExecutedExplorer` and other existing generic deduction. Reviewers: jdoerfert, sstefan1 Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66645 llvm-svn: 374060
This commit is contained in:
parent
ed5d1c12dc
commit
08daf8cf0a
|
@ -560,6 +560,21 @@ static void clampReturnedValueStates(Attributor &A, const AAType &QueryingAA,
|
|||
S ^= *T;
|
||||
}
|
||||
|
||||
/// Helper class to compose two generic deduction
|
||||
template <typename AAType, typename Base, typename StateType,
|
||||
template <typename...> class F, template <typename...> class G>
|
||||
struct AAComposeTwoGenericDeduction
|
||||
: public F<AAType, G<AAType, Base, StateType>, StateType> {
|
||||
AAComposeTwoGenericDeduction(const IRPosition &IRP)
|
||||
: F<AAType, G<AAType, Base, StateType>, StateType>(IRP) {}
|
||||
|
||||
/// See AbstractAttribute::updateImpl(...).
|
||||
ChangeStatus updateImpl(Attributor &A) override {
|
||||
return F<AAType, G<AAType, Base, StateType>, StateType>::updateImpl(A) |
|
||||
G<AAType, Base, StateType>::updateImpl(A);
|
||||
}
|
||||
};
|
||||
|
||||
/// Helper class for generic deduction: return value -> returned position.
|
||||
template <typename AAType, typename Base,
|
||||
typename StateType = typename AAType::StateType>
|
||||
|
|
Loading…
Reference in New Issue