@@ -243,6 +243,11 @@ int emit_asr(const std::string &infile,
243243 pass_options.always_run = true ;
244244 pass_options.verbose = compiler_options.verbose ;
245245 pass_options.pass_cumulative = compiler_options.pass_cumulative ;
246+ pass_options.all_symbols_mangling = compiler_options.all_symbols_mangling ;
247+ pass_options.module_name_mangling = compiler_options.module_name_mangling ;
248+ pass_options.global_symbols_mangling = compiler_options.global_symbols_mangling ;
249+ pass_options.intrinsic_symbols_mangling = compiler_options.intrinsic_symbols_mangling ;
250+
246251
247252 pass_manager.apply_passes (al, asr, pass_options, diagnostics);
248253
@@ -345,6 +350,10 @@ int emit_c(const std::string &infile,
345350 pass_options.run_fun = " f" ;
346351 pass_options.always_run = true ;
347352 pass_options.verbose = compiler_options.verbose ;
353+ pass_options.all_symbols_mangling = compiler_options.all_symbols_mangling ;
354+ pass_options.module_name_mangling = compiler_options.module_name_mangling ;
355+ pass_options.global_symbols_mangling = compiler_options.global_symbols_mangling ;
356+ pass_options.intrinsic_symbols_mangling = compiler_options.intrinsic_symbols_mangling ;
348357
349358 pass_manager.apply_passes (al, asr, pass_options, diagnostics);
350359
@@ -398,6 +407,10 @@ int emit_c_to_file(const std::string &infile, const std::string &outfile,
398407 pass_options.run_fun = " f" ;
399408 pass_options.always_run = true ;
400409 pass_options.verbose = compiler_options.verbose ;
410+ pass_options.all_symbols_mangling = compiler_options.all_symbols_mangling ;
411+ pass_options.module_name_mangling = compiler_options.module_name_mangling ;
412+ pass_options.global_symbols_mangling = compiler_options.global_symbols_mangling ;
413+ pass_options.intrinsic_symbols_mangling = compiler_options.intrinsic_symbols_mangling ;
401414
402415 pass_manager.apply_passes (al, asr, pass_options, diagnostics);
403416
@@ -1501,6 +1514,7 @@ int main(int argc, char *argv[])
15011514 bool print_targets = false ;
15021515 bool print_rtl_header_dir = false ;
15031516 bool print_rtl_dir = false ;
1517+ bool separate_compilation = false ;
15041518
15051519 std::string arg_fmt_file;
15061520 // int arg_fmt_indent = 4;
@@ -1579,6 +1593,11 @@ int main(int argc, char *argv[])
15791593 app.add_flag (" --enable-cpython" , compiler_options.enable_cpython , " Enable CPython runtime" );
15801594 app.add_flag (" --enable-symengine" , compiler_options.enable_symengine , " Enable Symengine runtime" );
15811595 app.add_flag (" --link-numpy" , compiler_options.link_numpy , " Enable NumPy runtime (implies --enable-cpython)" );
1596+ app.add_flag (" --separate-compilation" , separate_compilation, " Generates unique names for all the symbols" );
1597+ app.add_flag (" --module-mangling" , compiler_options.module_name_mangling , " Mangles the module name" );
1598+ app.add_flag (" --global-mangling" , compiler_options.global_symbols_mangling , " Mangles all the global symbols" );
1599+ app.add_flag (" --intrinsic-mangling" , compiler_options.intrinsic_symbols_mangling , " Mangles all the intrinsic symbols" );
1600+ app.add_flag (" --all-mangling" , compiler_options.all_symbols_mangling , " Mangles all possible symbols" );
15821601
15831602 // LSP specific options
15841603 app.add_flag (" --show-errors" , show_errors, " Show errors when LSP is running in the background" );
@@ -1616,7 +1635,7 @@ int main(int argc, char *argv[])
16161635 app.require_subcommand (0 , 1 );
16171636 CLI11_PARSE (app, argc, argv);
16181637
1619- lcompilers_unique_ID = LCompilers::get_unique_ID ();
1638+ lcompilers_unique_ID = separate_compilation ? LCompilers::get_unique_ID (): " " ;
16201639
16211640
16221641 if ( compiler_options.fast && compiler_options.enable_bounds_checking ) {
0 commit comments