Skip to content

Commit ebd5168

Browse files
Store filename in the Debug information
1 parent 157e517 commit ebd5168

File tree

5 files changed

+18
-11
lines changed

5 files changed

+18
-11
lines changed

src/bin/lpython.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,7 @@ int emit_llvm(const std::string &infile,
557557
// ASR -> LLVM
558558
LFortran::PythonCompiler fe(compiler_options);
559559
LFortran::Result<std::unique_ptr<LFortran::LLVMModule>>
560-
res = fe.get_llvm3(*asr, pass_manager, diagnostics);
560+
res = fe.get_llvm3(*asr, pass_manager, diagnostics, infile);
561561
std::cerr << diagnostics.render(input, lm, compiler_options);
562562
if (!res.ok) {
563563
LFORTRAN_ASSERT(diagnostics.has_error())
@@ -628,7 +628,7 @@ int compile_python_to_object_file(
628628
std::unique_ptr<LFortran::LLVMModule> m;
629629
auto asr_to_llvm_start = std::chrono::high_resolution_clock::now();
630630
LFortran::Result<std::unique_ptr<LFortran::LLVMModule>>
631-
res = fe.get_llvm3(*asr, pass_manager, diagnostics);
631+
res = fe.get_llvm3(*asr, pass_manager, diagnostics, infile);
632632
auto asr_to_llvm_end = std::chrono::high_resolution_clock::now();
633633
times.push_back(std::make_pair("ASR to LLVM", std::chrono::duration<double, std::milli>(asr_to_llvm_end - asr_to_llvm_start).count()));
634634
std::cerr << diagnostics.render(input, lm, compiler_options);

src/libasr/codegen/asr_to_llvm.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
162162
std::unique_ptr<llvm::IRBuilder<>> builder;
163163
Platform platform;
164164
bool emit_debug_info;
165+
std::string infile;
165166
bool emit_debug_line_column;
166167
Allocator &al;
167168

@@ -240,12 +241,14 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
240241
llvm::DIFile *debug_Unit;
241242

242243
ASRToLLVMVisitor(Allocator &al, llvm::LLVMContext &context, Platform platform,
243-
bool emit_debug_info, diag::Diagnostics &diagnostics) :
244+
bool emit_debug_info, std::string infile, bool emit_debug_line_column,
245+
diag::Diagnostics &diagnostics) :
244246
diag{diagnostics},
245247
context(context),
246248
builder(std::make_unique<llvm::IRBuilder<>>(context)),
247249
platform{platform},
248250
emit_debug_info{emit_debug_info},
251+
infile{infile},
249252
emit_debug_line_column{emit_debug_line_column},
250253
al{al},
251254
prototype_only(false),
@@ -1160,7 +1163,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
11601163
if (emit_debug_info) {
11611164
DBuilder = std::make_unique<llvm::DIBuilder>(*module);
11621165
debug_CU = DBuilder->createCompileUnit(
1163-
llvm::dwarf::DW_LANG_C, DBuilder->createFile("xxexpr.py", "/yy/"),
1166+
llvm::dwarf::DW_LANG_C, DBuilder->createFile(infile, "."),
11641167
"LPython Compiler", false, "", 0);
11651168
}
11661169

@@ -6369,12 +6372,14 @@ Result<std::unique_ptr<LLVMModule>> asr_to_llvm(ASR::TranslationUnit_t &asr,
63696372
diag::Diagnostics &diagnostics,
63706373
llvm::LLVMContext &context, Allocator &al,
63716374
LCompilers::PassManager& pass_manager,
6372-
CompilerOptions &co, const std::string &run_fn)
6375+
CompilerOptions &co, const std::string &run_fn,
6376+
const std::string &infile)
63736377
{
63746378
#if LLVM_VERSION_MAJOR >= 15
63756379
context.setOpaquePointers(false);
63766380
#endif
6377-
ASRToLLVMVisitor v(al, context, co.platform, co.emit_debug_info, diagnostics);
6381+
ASRToLLVMVisitor v(al, context, co.platform, co.emit_debug_info, infile,
6382+
co.emit_debug_line_column, diagnostics);
63786383
LCompilers::PassOptions pass_options;
63796384
pass_options.run_fun = run_fn;
63806385
pass_options.always_run = false;

src/libasr/codegen/asr_to_llvm.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ namespace LFortran {
1212
llvm::LLVMContext &context, Allocator &al,
1313
LCompilers::PassManager& pass_manager,
1414
CompilerOptions &co,
15-
const std::string &run_fn);
15+
const std::string &run_fn,
16+
const std::string &infile);
1617

1718
} // namespace LFortran
1819

src/lpython/python_evaluator.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ PythonCompiler::~PythonCompiler() = default;
3939
Result<std::unique_ptr<LLVMModule>> PythonCompiler::get_llvm3(
4040
#ifdef HAVE_LFORTRAN_LLVM
4141
ASR::TranslationUnit_t &asr, LCompilers::PassManager& lpm,
42-
diag::Diagnostics &diagnostics
42+
diag::Diagnostics &diagnostics, const std::string &infile
4343
#else
4444
ASR::TranslationUnit_t &/*asr*/, LCompilers::PassManager&/*lpm*/,
45-
diag::Diagnostics &/*diagnostics*/
45+
diag::Diagnostics &/*diagnostics*/,const std::string &/*infile*/
4646
#endif
4747
)
4848
{
@@ -55,7 +55,7 @@ Result<std::unique_ptr<LLVMModule>> PythonCompiler::get_llvm3(
5555
Result<std::unique_ptr<LFortran::LLVMModule>> res
5656
= asr_to_llvm(asr, diagnostics,
5757
e->get_context(), al, lpm, compiler_options,
58-
run_fn);
58+
run_fn, infile);
5959
if (res.ok) {
6060
m = std::move(res.result);
6161
} else {

src/lpython/python_evaluator.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ class PythonCompiler
5252
};
5353

5454
Result<std::unique_ptr<LLVMModule>> get_llvm3(ASR::TranslationUnit_t &asr,
55-
LCompilers::PassManager& lpm, diag::Diagnostics &diagnostics);
55+
LCompilers::PassManager& lpm, diag::Diagnostics &diagnostics,
56+
const std::string &infile);
5657

5758
private:
5859
Allocator al;

0 commit comments

Comments
 (0)