From 844aabe3d697337d7424d2bb5837b3bfb243d010 Mon Sep 17 00:00:00 2001 From: Robert Marsh Date: Fri, 29 Jul 2022 14:51:09 -0400 Subject: [PATCH] C++/C#: fix join order in GVN --- .../gvn/internal/ValueNumberingInternal.qll | 10 +++++----- .../raw/gvn/internal/ValueNumberingInternal.qll | 10 +++++----- .../gvn/internal/ValueNumberingInternal.qll | 10 +++++----- .../raw/gvn/internal/ValueNumberingInternal.qll | 10 +++++----- .../gvn/internal/ValueNumberingInternal.qll | 10 +++++----- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/internal/ValueNumberingInternal.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/internal/ValueNumberingInternal.qll index 02de941eea5..eeb7adf9a16 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/internal/ValueNumberingInternal.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/internal/ValueNumberingInternal.qll @@ -56,8 +56,8 @@ newtype TCallPartialValueNumber = predicate callValueNumber(CallInstruction call, int index, TCallPartialValueNumber vn) { index = max(int n | callArgRank(call, n, _) | n) and exists(TCallPartialValueNumber head, TValueNumber arg | - callPartialValueNumber(call, index, head) and - callArgValueNumber(call, index, arg) and + callPartialValueNumber(call, index, pragma[only_bind_out](head)) and + callArgValueNumber(call, index, pragma[only_bind_into](arg)) and vn = TArgument(head, arg) ) or @@ -67,11 +67,11 @@ predicate callValueNumber(CallInstruction call, int index, TCallPartialValueNumb } predicate callPartialValueNumber(CallInstruction call, int index, TCallPartialValueNumber head) { - index = 1 and head = TNilArgument() + index = 1 and head = TNilArgument() and exists(call) or exists(TCallPartialValueNumber prev, TValueNumber prevVN | - callPartialValueNumber(call, index - 1, prev) and - callArgValueNumber(call, index - 1, prevVN) and + callPartialValueNumber(call, index - 1, pragma[only_bind_out](prev)) and + callArgValueNumber(call, index - 1, pragma[only_bind_into](prevVN)) and head = TArgument(prev, prevVN) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/internal/ValueNumberingInternal.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/internal/ValueNumberingInternal.qll index 02de941eea5..eeb7adf9a16 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/internal/ValueNumberingInternal.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/gvn/internal/ValueNumberingInternal.qll @@ -56,8 +56,8 @@ newtype TCallPartialValueNumber = predicate callValueNumber(CallInstruction call, int index, TCallPartialValueNumber vn) { index = max(int n | callArgRank(call, n, _) | n) and exists(TCallPartialValueNumber head, TValueNumber arg | - callPartialValueNumber(call, index, head) and - callArgValueNumber(call, index, arg) and + callPartialValueNumber(call, index, pragma[only_bind_out](head)) and + callArgValueNumber(call, index, pragma[only_bind_into](arg)) and vn = TArgument(head, arg) ) or @@ -67,11 +67,11 @@ predicate callValueNumber(CallInstruction call, int index, TCallPartialValueNumb } predicate callPartialValueNumber(CallInstruction call, int index, TCallPartialValueNumber head) { - index = 1 and head = TNilArgument() + index = 1 and head = TNilArgument() and exists(call) or exists(TCallPartialValueNumber prev, TValueNumber prevVN | - callPartialValueNumber(call, index - 1, prev) and - callArgValueNumber(call, index - 1, prevVN) and + callPartialValueNumber(call, index - 1, pragma[only_bind_out](prev)) and + callArgValueNumber(call, index - 1, pragma[only_bind_into](prevVN)) and head = TArgument(prev, prevVN) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/internal/ValueNumberingInternal.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/internal/ValueNumberingInternal.qll index 02de941eea5..eeb7adf9a16 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/internal/ValueNumberingInternal.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/internal/ValueNumberingInternal.qll @@ -56,8 +56,8 @@ newtype TCallPartialValueNumber = predicate callValueNumber(CallInstruction call, int index, TCallPartialValueNumber vn) { index = max(int n | callArgRank(call, n, _) | n) and exists(TCallPartialValueNumber head, TValueNumber arg | - callPartialValueNumber(call, index, head) and - callArgValueNumber(call, index, arg) and + callPartialValueNumber(call, index, pragma[only_bind_out](head)) and + callArgValueNumber(call, index, pragma[only_bind_into](arg)) and vn = TArgument(head, arg) ) or @@ -67,11 +67,11 @@ predicate callValueNumber(CallInstruction call, int index, TCallPartialValueNumb } predicate callPartialValueNumber(CallInstruction call, int index, TCallPartialValueNumber head) { - index = 1 and head = TNilArgument() + index = 1 and head = TNilArgument() and exists(call) or exists(TCallPartialValueNumber prev, TValueNumber prevVN | - callPartialValueNumber(call, index - 1, prev) and - callArgValueNumber(call, index - 1, prevVN) and + callPartialValueNumber(call, index - 1, pragma[only_bind_out](prev)) and + callArgValueNumber(call, index - 1, pragma[only_bind_into](prevVN)) and head = TArgument(prev, prevVN) ) } diff --git a/csharp/ql/src/experimental/ir/implementation/raw/gvn/internal/ValueNumberingInternal.qll b/csharp/ql/src/experimental/ir/implementation/raw/gvn/internal/ValueNumberingInternal.qll index 02de941eea5..eeb7adf9a16 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/gvn/internal/ValueNumberingInternal.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/gvn/internal/ValueNumberingInternal.qll @@ -56,8 +56,8 @@ newtype TCallPartialValueNumber = predicate callValueNumber(CallInstruction call, int index, TCallPartialValueNumber vn) { index = max(int n | callArgRank(call, n, _) | n) and exists(TCallPartialValueNumber head, TValueNumber arg | - callPartialValueNumber(call, index, head) and - callArgValueNumber(call, index, arg) and + callPartialValueNumber(call, index, pragma[only_bind_out](head)) and + callArgValueNumber(call, index, pragma[only_bind_into](arg)) and vn = TArgument(head, arg) ) or @@ -67,11 +67,11 @@ predicate callValueNumber(CallInstruction call, int index, TCallPartialValueNumb } predicate callPartialValueNumber(CallInstruction call, int index, TCallPartialValueNumber head) { - index = 1 and head = TNilArgument() + index = 1 and head = TNilArgument() and exists(call) or exists(TCallPartialValueNumber prev, TValueNumber prevVN | - callPartialValueNumber(call, index - 1, prev) and - callArgValueNumber(call, index - 1, prevVN) and + callPartialValueNumber(call, index - 1, pragma[only_bind_out](prev)) and + callArgValueNumber(call, index - 1, pragma[only_bind_into](prevVN)) and head = TArgument(prev, prevVN) ) } diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/gvn/internal/ValueNumberingInternal.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/gvn/internal/ValueNumberingInternal.qll index 02de941eea5..eeb7adf9a16 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/gvn/internal/ValueNumberingInternal.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/gvn/internal/ValueNumberingInternal.qll @@ -56,8 +56,8 @@ newtype TCallPartialValueNumber = predicate callValueNumber(CallInstruction call, int index, TCallPartialValueNumber vn) { index = max(int n | callArgRank(call, n, _) | n) and exists(TCallPartialValueNumber head, TValueNumber arg | - callPartialValueNumber(call, index, head) and - callArgValueNumber(call, index, arg) and + callPartialValueNumber(call, index, pragma[only_bind_out](head)) and + callArgValueNumber(call, index, pragma[only_bind_into](arg)) and vn = TArgument(head, arg) ) or @@ -67,11 +67,11 @@ predicate callValueNumber(CallInstruction call, int index, TCallPartialValueNumb } predicate callPartialValueNumber(CallInstruction call, int index, TCallPartialValueNumber head) { - index = 1 and head = TNilArgument() + index = 1 and head = TNilArgument() and exists(call) or exists(TCallPartialValueNumber prev, TValueNumber prevVN | - callPartialValueNumber(call, index - 1, prev) and - callArgValueNumber(call, index - 1, prevVN) and + callPartialValueNumber(call, index - 1, pragma[only_bind_out](prev)) and + callArgValueNumber(call, index - 1, pragma[only_bind_into](prevVN)) and head = TArgument(prev, prevVN) ) }