add ret void pour func void
This commit is contained in:
@@ -78,8 +78,8 @@ public class toLLVM_Visitor implements ProgramVisitor<SymTable,ProgramLLVMImp>,
|
||||
if(!(instrLLVM.getLast() instanceof ReturnLLVMImp || instrLLVM.getLast() instanceof BrLLVMImp)){
|
||||
instrLLVM.add(new ReturnLLVMImp(type, new ValLLVMImp(type,0)));
|
||||
}
|
||||
}else {
|
||||
//TODO
|
||||
}else if(type instanceof VoidLLVMImp){
|
||||
instrLLVM.add(new ReturnLLVMImp(type,null));
|
||||
}
|
||||
DefineLLVMImp define = new DefineLLVMImp(fun.nom(), type, paramsLLVM, instrLLVM);
|
||||
return define;
|
||||
@@ -138,14 +138,18 @@ public class toLLVM_Visitor implements ProgramVisitor<SymTable,ProgramLLVMImp>,
|
||||
|
||||
@Override
|
||||
public ArrayList<InstructionLLVM> visitReturn(Return_instrImp instr, SymTable h) {
|
||||
InstrAndVal res = instr.e().accept(this,h);
|
||||
ValLLVM var = res.val;
|
||||
|
||||
InstructionLLVM r = new ReturnLLVMImp(var.getType(),var);
|
||||
ArrayList<InstructionLLVM> result = new ArrayList<>();
|
||||
result.addAll(res.instrs);
|
||||
result.add(r);
|
||||
//ret void
|
||||
if (instr.e() == null) {
|
||||
result.add(new ReturnLLVMImp(new VoidLLVMImp(), null));
|
||||
}else{
|
||||
InstrAndVal res = instr.e().accept(this,h);
|
||||
ValLLVM var = res.val;
|
||||
|
||||
InstructionLLVM r = new ReturnLLVMImp(var.getType(),var);
|
||||
result.addAll(res.instrs);
|
||||
result.add(r);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user