Commit dd97096dde7c98f0cf7394b6bec02f0e886913b0

Authored by Austin Sun
1 parent 992208e596
Exists in master

wells

Showing 2 changed files with 9 additions and 13 deletions Side-by-side Diff

... ... @@ -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 }
... ... @@ -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