From 000ee4226e2ab2a8dde53f831e97d929dfaaa4a3 Mon Sep 17 00:00:00 2001 From: Ben Cumming <louncharf@gmail.com> Date: Mon, 20 Feb 2017 10:38:03 +0100 Subject: [PATCH] Fix pointer to view conversion for optimized intel kernels (#153) Bug: `modcc` was generating invalid code when generating optimized kernels. The optimized kernels use raw pointers instead of views, and the generated code was using view semantics. * Use appropriate `memory::copy` invocation for the optimized kernel case. --- modcc/cprinter.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modcc/cprinter.cpp b/modcc/cprinter.cpp index c588c5ec..f4c9de89 100644 --- a/modcc/cprinter.cpp +++ b/modcc/cprinter.cpp @@ -136,7 +136,12 @@ CPrinter::CPrinter(Module &m, bool o) if (m.kind() == moduleKind::density) { text_.add_line("// add the user-supplied weights for converting from current density"); text_.add_line("// to per-compartment current in nA"); - text_.add_line("memory::copy(weights, weights_(0, size()));"); + if(optimize_) { + text_.add_line("memory::copy(weights, view(weights_, size()));"); + } + else { + text_.add_line("memory::copy(weights, weights_(0, size()));"); + } text_.add_line(); } -- GitLab