Skip to content

Commit

Permalink
Actually setup jit targets when compiling packageimages instead of ta…
Browse files Browse the repository at this point in the history
…rgeting only one
  • Loading branch information
gbaraldi committed May 14, 2024
1 parent 1221160 commit b23d5e1
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 18 deletions.
8 changes: 2 additions & 6 deletions src/processor_arm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1634,8 +1634,6 @@ static void ensure_jit_target(bool imaging)
{
auto &cmdline = get_cmdline_targets();
check_cmdline(cmdline, imaging);
if (!jit_targets.empty())
return;
for (auto &arg: cmdline) {
auto data = arg_target_data(arg, jit_targets.empty());
jit_targets.push_back(std::move(data));
Expand Down Expand Up @@ -1854,8 +1852,6 @@ jl_image_t jl_init_processor_pkgimg(void *hdl)
{
if (jit_targets.empty())
jl_error("JIT targets not initialized");
if (jit_targets.size() > 1)
jl_error("Expected only one JIT target");
return parse_sysimg(hdl, pkgimg_init_cb);
}

Expand All @@ -1873,8 +1869,8 @@ JL_DLLEXPORT jl_value_t* jl_check_pkgimage_clones(char *data)
std::pair<std::string,llvm::SmallVector<std::string, 0>> jl_get_llvm_target(bool imaging, uint32_t &flags)
{
ensure_jit_target(imaging);
flags = jit_targets[0].en.flags;
return get_llvm_target_vec(jit_targets[0]);
flags = jit_targets.front().en.flags;
return get_llvm_target_vec(jit_targets.front());
}

const std::pair<std::string,std::string> &jl_get_llvm_disasm_target(void)
Expand Down
8 changes: 2 additions & 6 deletions src/processor_fallback.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,6 @@ static void ensure_jit_target(bool imaging)
{
auto &cmdline = get_cmdline_targets();
check_cmdline(cmdline, imaging);
if (!jit_targets.empty())
return;
for (auto &arg: cmdline) {
auto data = arg_target_data(arg, jit_targets.empty());
jit_targets.push_back(std::move(data));
Expand Down Expand Up @@ -126,16 +124,14 @@ jl_image_t jl_init_processor_pkgimg(void *hdl)
{
if (jit_targets.empty())
jl_error("JIT targets not initialized");
if (jit_targets.size() > 1)
jl_error("Expected only one JIT target");
return parse_sysimg(hdl, pkgimg_init_cb);
}

std::pair<std::string,llvm::SmallVector<std::string, 0>> jl_get_llvm_target(bool imaging, uint32_t &flags)
{
ensure_jit_target(imaging);
flags = jit_targets[0].en.flags;
return get_llvm_target_vec(jit_targets[0]);
flags = jit_targets.front().en.flags;
return get_llvm_target_vec(jit_targets.front());
}

const std::pair<std::string,std::string> &jl_get_llvm_disasm_target(void)
Expand Down
8 changes: 2 additions & 6 deletions src/processor_x86.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -914,8 +914,6 @@ static void ensure_jit_target(bool imaging)
{
auto &cmdline = get_cmdline_targets();
check_cmdline(cmdline, imaging);
if (!jit_targets.empty())
return;
for (auto &arg: cmdline) {
auto data = arg_target_data(arg, jit_targets.empty());
jit_targets.push_back(std::move(data));
Expand Down Expand Up @@ -1084,16 +1082,14 @@ jl_image_t jl_init_processor_pkgimg(void *hdl)
{
if (jit_targets.empty())
jl_error("JIT targets not initialized");
if (jit_targets.size() > 1)
jl_error("Expected only one JIT target");
return parse_sysimg(hdl, pkgimg_init_cb);
}

std::pair<std::string,llvm::SmallVector<std::string, 0>> jl_get_llvm_target(bool imaging, uint32_t &flags)
{
ensure_jit_target(imaging);
flags = jit_targets[0].en.flags;
return get_llvm_target_vec(jit_targets[0]);
flags = jit_targets.front().en.flags;
return get_llvm_target_vec(jit_targets.front());
}

const std::pair<std::string,std::string> &jl_get_llvm_disasm_target(void)
Expand Down

0 comments on commit b23d5e1

Please sign in to comment.