aboutsummaryrefslogtreecommitdiff
path: root/src/ir_print.cpp
diff options
context:
space:
mode:
authorlachsinc <lachlansinclair@gmail.com>2018-09-18 21:28:28 +1000
committerlachsinc <lachlansinclair@gmail.com>2018-09-18 21:28:28 +1000
commit7dcad45e0d9b891dd17c7caf8de28d8345c41a37 (patch)
tree46f98038fa75dfc722c4678e270583186ad0cad6 /src/ir_print.cpp
parent3772ea6ae145a17facc8007822a1d7eb97c4dd45 (diff)
Add proper procedure type support (return types and param proc signature)
Diffstat (limited to 'src/ir_print.cpp')
-rw-r--r--src/ir_print.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/ir_print.cpp b/src/ir_print.cpp
index b7a4f9e65..cb635cab8 100644
--- a/src/ir_print.cpp
+++ b/src/ir_print.cpp
@@ -1982,16 +1982,21 @@ void print_llvm_ir(irGen *ir) {
di->Proc.pos.line,
di->Proc.pos.line, // NOTE(lachsinc): Assume scopeLine always same as line.
m->debug_compile_unit->id);
- if (di->Proc.return_types.count == 0) {
- ir_fprintf(f, "null})");
- } else {
- for_array(return_type_index, di->Proc.return_types) {
- ir_fprintf(f, "%s!%d",
- return_type_index > 0 ? ", " : "",
- di->Proc.return_types[return_type_index]->id);
+ if (di->Proc.types.count > 0) {
+ for_array(type_index, di->Proc.types) {
+ if (type_index > 0) {
+ ir_write_byte(f, ',');
+ }
+ if (di->Proc.types[type_index]) {
+ ir_fprintf(f, "!%d", di->Proc.types[type_index]->id);
+ } else {
+ ir_write_str_lit(f, "null");
+ }
}
- ir_write_str_lit(f, "})");
+ } else {
+ ir_write_str_lit(f, "null");
}
+ ir_write_str_lit(f, "})"); // !DISubroutineTypes close
ir_write_byte(f, ')');
break;
case irDebugInfo_LocalVariable: {