Commit dd97096dde7c98f0cf7394b6bec02f0e886913b0
1 parent
992208e596
Exists in
master
wells
Showing 2 changed files with 9 additions and 13 deletions Side-by-side Diff
ast_expr.cc
View file @
dd97096
... | ... | @@ -13,6 +13,7 @@ |
13 | 13 | IntConstant::IntConstant(yyltype loc, int val) : Expr(loc) { |
14 | 14 | value = val; |
15 | 15 | } |
16 | + | |
16 | 17 | void IntConstant::PrintChildren(int indentLevel) { |
17 | 18 | printf("%d", value); |
18 | 19 | } |
... | ... | @@ -136,12 +137,6 @@ |
136 | 137 | llvm::Value* VarExpr::Emit() { |
137 | 138 | return new llvm::LoadInst(findSymbol(id->GetName()).second, "", irgen.GetBasicBlock()); |
138 | 139 | } |
139 | -/* | |
140 | -llvm::Value* AssignExpr::Emit() { | |
141 | - VarExpr* ve = dynamic_cast<VarExpr*>(left); | |
142 | - return new llvm::StoreInst(right->Emit(), findSymbol(ve->GetIdentifier()->GetName()).second, false, irgen.GetBasicBlock()); | |
143 | -} | |
144 | - */ | |
145 | 140 | |
146 | 141 | string Operator::getToken() const { |
147 | 142 | return tokenString; |
148 | 143 | |
... | ... | @@ -325,11 +320,12 @@ |
325 | 320 | llvm::Value *binOp = NULL; |
326 | 321 | |
327 | 322 | if(dynamic_cast<FieldAccess*>(left)!=NULL){ |
323 | + //std::cerr<< "field access"<<"\n"; | |
328 | 324 | return (dynamic_cast<FieldAccess*>(left)->FieldStore(rightval,op->getToken()[0])); |
329 | 325 | } |
330 | 326 | if(op->IsOp("=")){ |
331 | 327 | new llvm::StoreInst(rightval,targetL,basicBlock); |
332 | - retVal=targetL; | |
328 | + retVal=rightval; | |
333 | 329 | } |
334 | 330 | else if(op->IsOp("+=")){ |
335 | 331 | if( leftval->getType()== convertType(Type::intType)){ |
336 | 332 | |
... | ... | @@ -419,10 +415,10 @@ |
419 | 415 | new llvm::StoreInst(binOp,targetL,basicBlock); |
420 | 416 | } |
421 | 417 | } |
422 | - | |
423 | 418 | return rightval; |
424 | 419 | } |
425 | 420 | |
421 | + | |
426 | 422 | llvm::Value * FieldAccess::FieldStore(llvm::Value* val, char oper){ |
427 | 423 | llvm::Value* baseVal = getBase()->Emit(); |
428 | 424 | string fieldName = getField()->GetName(); |
429 | 425 | |
... | ... | @@ -649,11 +645,9 @@ |
649 | 645 | llvm::Value * ArrayAccess::Emit(){ |
650 | 646 | Expr * base= GetBase(); |
651 | 647 | Expr * sub= GetSubScript(); |
652 | - std::cerr<< "arrayAccess"<<"\n"; | |
648 | + //std::cerr<< "arrayAccess"<<"\n"; | |
653 | 649 | |
654 | - if(isInCurrentScope( dynamic_cast< VarExpr* >(base)->GetIdentifier()->GetName())){ | |
655 | - std::cerr<< "arrayAccess2"<<"\n"; | |
656 | - | |
650 | + if(dynamic_cast< VarExpr* >(base)->GetIdentifier()->GetName()){ | |
657 | 651 | llvm::Value * val= findSymbol(dynamic_cast< VarExpr* >(base)->GetIdentifier()->GetName()).second; |
658 | 652 | llvm::Value * subscrVal = sub->Emit(); |
659 | 653 | std::vector <llvm::Value*> vect; |
... | ... | @@ -665,6 +659,7 @@ |
665 | 659 | return new llvm::LoadInst(elmt,"ARRAYACCESS",irgen.GetBasicBlock()); |
666 | 660 | } |
667 | 661 | else{ |
662 | + //std::cerr<< "fucking fuck fuck fuck"<<"\n"; | |
668 | 663 | return NULL; |
669 | 664 | } |
670 | 665 | } |
ast_stmt.cc
View file @
dd97096
... | ... | @@ -31,7 +31,7 @@ |
31 | 31 | } |
32 | 32 | popScope(); |
33 | 33 | |
34 | - //module->dump(); | |
34 | + module->dump(); | |
35 | 35 | llvm::WriteBitcodeToFile(module, llvm::outs()); |
36 | 36 | return NULL; |
37 | 37 | } |
... | ... | @@ -182,6 +182,7 @@ |
182 | 182 | llvm::BasicBlock * bodyBlock = llvm::BasicBlock::Create(*context, "bodyBlock", f); |
183 | 183 | llvm::Value * cond; |
184 | 184 | |
185 | + cout<<endl; | |
185 | 186 | // init and branch to head |
186 | 187 | init->Emit(); |
187 | 188 |