aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-03-02 21:09:01 +0100
committerGitHub <noreply@github.com>2024-03-02 21:09:01 +0100
commit6bd94fdeefbf16d362460b5d3de9b99c67dfc122 (patch)
tree26982bc30399bb32a8fb9ed796d58ffc3948513e
parent0e9a0c68eed18d05ae9eed89829889ca17af1e0b (diff)
parentfa4bbd3df33c1dc5ee405f71c4257220ad29ce07 (diff)
Merge pull request #30460 from vespa-engine/toregge/avoid-clang-16-crash
Backport to clang 16.
-rw-r--r--eval/src/tests/eval/compiled_function/compiled_function_test.cpp18
-rw-r--r--eval/src/tests/eval/gbdt/gbdt_test.cpp18
2 files changed, 20 insertions, 16 deletions
diff --git a/eval/src/tests/eval/compiled_function/compiled_function_test.cpp b/eval/src/tests/eval/compiled_function/compiled_function_test.cpp
index 7b1f9a84b6d..d84939caff2 100644
--- a/eval/src/tests/eval/compiled_function/compiled_function_test.cpp
+++ b/eval/src/tests/eval/compiled_function/compiled_function_test.cpp
@@ -29,10 +29,11 @@ TEST("require that separate parameter passing works") {
TEST("require that array parameter passing works") {
CompiledFunction arr_cf(*Function::parse(params_10, expr_10), PassParams::ARRAY);
auto arr_fun = arr_cf.get_function();
- EXPECT_EQUAL(10.0, arr_fun(&std::vector<double>({1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0})[0]));
- EXPECT_EQUAL(50.0, arr_fun(&std::vector<double>({5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0})[0]));
- EXPECT_EQUAL(45.0, arr_fun(&std::vector<double>({0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0})[0]));
- EXPECT_EQUAL(45.0, arr_fun(&std::vector<double>({9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 0.0})[0]));
+ auto eval_arr_fun = [&arr_fun](std::vector<double> args) { return arr_fun(&args[0]); };
+ EXPECT_EQUAL(10.0, eval_arr_fun({1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}));
+ EXPECT_EQUAL(50.0, eval_arr_fun({5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0}));
+ EXPECT_EQUAL(45.0, eval_arr_fun({0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}));
+ EXPECT_EQUAL(45.0, eval_arr_fun({9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 0.0}));
}
double my_resolve(void *ctx, size_t idx) { return ((double *)ctx)[idx]; }
@@ -40,10 +41,11 @@ double my_resolve(void *ctx, size_t idx) { return ((double *)ctx)[idx]; }
TEST("require that lazy parameter passing works") {
CompiledFunction lazy_cf(*Function::parse(params_10, expr_10), PassParams::LAZY);
auto lazy_fun = lazy_cf.get_lazy_function();
- EXPECT_EQUAL(10.0, lazy_fun(my_resolve, &std::vector<double>({1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0})[0]));
- EXPECT_EQUAL(50.0, lazy_fun(my_resolve, &std::vector<double>({5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0})[0]));
- EXPECT_EQUAL(45.0, lazy_fun(my_resolve, &std::vector<double>({0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0})[0]));
- EXPECT_EQUAL(45.0, lazy_fun(my_resolve, &std::vector<double>({9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 0.0})[0]));
+ auto eval_lazy_fun = [&lazy_fun](std::vector<double> args) { return lazy_fun(my_resolve, &args[0]); };
+ EXPECT_EQUAL(10.0, eval_lazy_fun({1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}));
+ EXPECT_EQUAL(50.0, eval_lazy_fun({5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0}));
+ EXPECT_EQUAL(45.0, eval_lazy_fun({0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}));
+ EXPECT_EQUAL(45.0, eval_lazy_fun({9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 0.0}));
}
//-----------------------------------------------------------------------------
diff --git a/eval/src/tests/eval/gbdt/gbdt_test.cpp b/eval/src/tests/eval/gbdt/gbdt_test.cpp
index 2f5c5d75105..739202e68bf 100644
--- a/eval/src/tests/eval/gbdt/gbdt_test.cpp
+++ b/eval/src/tests/eval/gbdt/gbdt_test.cpp
@@ -275,10 +275,11 @@ TEST("require that less only VM tree optimizer works") {
CompiledFunction compiled_function(*function, PassParams::ARRAY, less_only_vm_chain);
EXPECT_EQUAL(1u, compiled_function.get_forests().size());
auto f = compiled_function.get_function();
- EXPECT_EQUAL(11.0, f(&std::vector<double>({0.5, 0.0, 0.0, 0.5, 0.0, 0.0})[0]));
- EXPECT_EQUAL(22.0, f(&std::vector<double>({1.5, 0.5, 0.5, 1.5, 0.5, 0.5})[0]));
- EXPECT_EQUAL(33.0, f(&std::vector<double>({1.5, 0.5, 1.5, 1.5, 0.5, 1.5})[0]));
- EXPECT_EQUAL(44.0, f(&std::vector<double>({1.5, 1.5, 0.0, 1.5, 1.5, 0.0})[0]));
+ auto eval_f = [&f](std::vector<double> args) { return f(&args[0]); };
+ EXPECT_EQUAL(11.0, eval_f({0.5, 0.0, 0.0, 0.5, 0.0, 0.0}));
+ EXPECT_EQUAL(22.0, eval_f({1.5, 0.5, 0.5, 1.5, 0.5, 0.5}));
+ EXPECT_EQUAL(33.0, eval_f({1.5, 0.5, 1.5, 1.5, 0.5, 1.5}));
+ EXPECT_EQUAL(44.0, eval_f({1.5, 1.5, 0.0, 1.5, 1.5, 0.0}));
}
TEST("require that models with in checks are rejected by less only vm optimizer") {
@@ -305,10 +306,11 @@ TEST("require that general VM tree optimizer works") {
CompiledFunction compiled_function(*function, PassParams::ARRAY, general_vm_chain);
EXPECT_EQUAL(1u, compiled_function.get_forests().size());
auto f = compiled_function.get_function();
- EXPECT_EQUAL(11.0, f(&std::vector<double>({0.5, 0.0, 0.0, 1.0, 0.0, 0.0})[0]));
- EXPECT_EQUAL(22.0, f(&std::vector<double>({1.5, 2.0, 1.0, 2.0, 0.5, 0.5})[0]));
- EXPECT_EQUAL(33.0, f(&std::vector<double>({1.5, 2.0, 2.0, 2.0, 0.5, 1.5})[0]));
- EXPECT_EQUAL(44.0, f(&std::vector<double>({1.5, 5.0, 0.0, 2.0, 1.5, 0.0})[0]));
+ auto eval_f = [&f](std::vector<double> args) { return f(&args[0]); };
+ EXPECT_EQUAL(11.0, eval_f({0.5, 0.0, 0.0, 1.0, 0.0, 0.0}));
+ EXPECT_EQUAL(22.0, eval_f({1.5, 2.0, 1.0, 2.0, 0.5, 0.5}));
+ EXPECT_EQUAL(33.0, eval_f({1.5, 2.0, 2.0, 2.0, 0.5, 1.5}));
+ EXPECT_EQUAL(44.0, eval_f({1.5, 5.0, 0.0, 2.0, 1.5, 0.0}));
}
TEST("require that models with too large sets are rejected by general vm optimizer") {