From 05b05cfbe8697a4a93d6ba674062f97465270412 Mon Sep 17 00:00:00 2001 From: Jonathan Salwan Date: Sat, 12 Feb 2022 23:48:27 +0100 Subject: [PATCH] Sort LLVM function parameters --- .build_number | 2 +- src/libtriton/ast/llvm/tritonToLLVM.cpp | 3 +++ src/libtriton/engines/symbolic/symbolicVariable.cpp | 5 +++++ src/libtriton/includes/triton/symbolicVariable.hpp | 3 +++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.build_number b/.build_number index 522e1e95a..1491db5f8 100644 --- a/.build_number +++ b/.build_number @@ -1 +1 @@ -1517 +1518 diff --git a/src/libtriton/ast/llvm/tritonToLLVM.cpp b/src/libtriton/ast/llvm/tritonToLLVM.cpp index f9e8d0ae2..b926ac471 100644 --- a/src/libtriton/ast/llvm/tritonToLLVM.cpp +++ b/src/libtriton/ast/llvm/tritonToLLVM.cpp @@ -35,6 +35,9 @@ namespace triton { // Collect used symbolic variables. auto vars = triton::ast::search(node, triton::ast::VARIABLE_NODE); + //! Sort symbolic variables + std::sort(vars.begin(), vars.end()); + // Each symbolic variable is a function argument std::vector argsType; argsType.resize(vars.size()); diff --git a/src/libtriton/engines/symbolic/symbolicVariable.cpp b/src/libtriton/engines/symbolic/symbolicVariable.cpp index a6bb13ed3..0d29f9c12 100644 --- a/src/libtriton/engines/symbolic/symbolicVariable.cpp +++ b/src/libtriton/engines/symbolic/symbolicVariable.cpp @@ -118,6 +118,11 @@ namespace triton { return stream; } + + bool operator<(const SymbolicVariable& symvar1, const SymbolicVariable& symvar2) { + return symvar1.getId() < symvar2.getId(); + } + }; /* symbolic namespace */ }; /* engines namespace */ }; /*triton namespace */ diff --git a/src/libtriton/includes/triton/symbolicVariable.hpp b/src/libtriton/includes/triton/symbolicVariable.hpp index 5cf4a3c3e..a8eb492e2 100644 --- a/src/libtriton/includes/triton/symbolicVariable.hpp +++ b/src/libtriton/includes/triton/symbolicVariable.hpp @@ -126,6 +126,9 @@ namespace triton { //! Displays a symbolic variable. TRITON_EXPORT std::ostream& operator<<(std::ostream& stream, const SymbolicVariable* symVar); + //! Compares two symbolic variables. + TRITON_EXPORT bool operator<(const SymbolicVariable& symvar1, const SymbolicVariable& symvar2); + /*! @} End of symbolic namespace */ }; /*! @} End of engines namespace */