diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2024-03-02 21:09:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-02 21:09:01 +0100 |
commit | 6bd94fdeefbf16d362460b5d3de9b99c67dfc122 (patch) | |
tree | 26982bc30399bb32a8fb9ed796d58ffc3948513e | |
parent | 0e9a0c68eed18d05ae9eed89829889ca17af1e0b (diff) | |
parent | fa4bbd3df33c1dc5ee405f71c4257220ad29ce07 (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.cpp | 18 | ||||
-rw-r--r-- | eval/src/tests/eval/gbdt/gbdt_test.cpp | 18 |
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") { |