correction param
This commit is contained in:
@@ -65,13 +65,22 @@ public class toLLVM_Visitor implements ProgramVisitor<SymTable,ProgramLLVMImp>,
|
||||
public DefineLLVMImp visitFunction(FunctionImp fun, SymTable h) {
|
||||
ArrayList<InstructionLLVM> instrLLVM = new ArrayList<>();
|
||||
ArrayList<VarLLVMImp> paramsLLVM = new ArrayList<>();
|
||||
ArrayList<InstructionLLVM> setParam = new ArrayList<>();
|
||||
for(VarImp param: fun.params()){
|
||||
TypeLLVM type = new IntLLVMImp();
|
||||
Result r = h.addParam(param.name());
|
||||
String name = r.var;
|
||||
VarLLVMImp var = new VarLLVMImp(new IntLLVMImp(), name,false);
|
||||
String nameParam = r.var;
|
||||
h = r.symTable;
|
||||
Result r2 = h.addVar(param.name(),type);
|
||||
String nameVar = r2.var;
|
||||
h = r2.symTable;
|
||||
VarLLVMImp var = new VarLLVMImp(type, nameParam,false);
|
||||
paramsLLVM.add(var);
|
||||
VarLLVMImp newVar =new VarLLVMImp(type, nameVar,false);
|
||||
setParam.add(new AssignLLVMImp(newVar,new allocaLLVMImp(type)));
|
||||
setParam.add(new StoreLLVMImp(type,var,type,newVar));
|
||||
}
|
||||
instrLLVM.addAll(setParam);
|
||||
instrLLVM.addAll(fun.instruction().accept(this, h));
|
||||
TypeLLVM type = fun.type().accept(this, h);
|
||||
if(!(type instanceof VoidLLVMImp)){ //on ajoute un return 0 si la fonction n'est pas un void, et ne finit ni par un return ni pas un goto (sans condition)
|
||||
|
||||
Reference in New Issue
Block a user