mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-05-14 09:38:40 +00:00
fix several bugs in the tutorial, patch by Kevin Kelley!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106498 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
584fedf188
commit
b0e9eada32
@ -367,9 +367,9 @@ Value *BinaryExprAST::Codegen() {
|
|||||||
if (L == 0 || R == 0) return 0;
|
if (L == 0 || R == 0) return 0;
|
||||||
|
|
||||||
switch (Op) {
|
switch (Op) {
|
||||||
case '+': return Builder.CreateAdd(L, R, "addtmp");
|
case '+': return Builder.CreateFAdd(L, R, "addtmp");
|
||||||
case '-': return Builder.CreateSub(L, R, "subtmp");
|
case '-': return Builder.CreateFSub(L, R, "subtmp");
|
||||||
case '*': return Builder.CreateMul(L, R, "multmp");
|
case '*': return Builder.CreateFMul(L, R, "multmp");
|
||||||
case '<':
|
case '<':
|
||||||
L = Builder.CreateFCmpULT(L, R, "cmptmp");
|
L = Builder.CreateFCmpULT(L, R, "cmptmp");
|
||||||
// Convert bool 0/1 to double 0.0 or 1.0
|
// Convert bool 0/1 to double 0.0 or 1.0
|
||||||
|
@ -615,7 +615,7 @@ Value *ForExprAST::Codegen() {
|
|||||||
StepVal = ConstantFP::get(getGlobalContext(), APFloat(1.0));
|
StepVal = ConstantFP::get(getGlobalContext(), APFloat(1.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
Value *NextVar = Builder.CreateAdd(Variable, StepVal, "nextvar");
|
Value *NextVar = Builder.CreateFAdd(Variable, StepVal, "nextvar");
|
||||||
|
|
||||||
// Compute the end condition.
|
// Compute the end condition.
|
||||||
Value *EndCond = End->Codegen();
|
Value *EndCond = End->Codegen();
|
||||||
|
@ -719,7 +719,7 @@ Value *ForExprAST::Codegen() {
|
|||||||
StepVal = ConstantFP::get(getGlobalContext(), APFloat(1.0));
|
StepVal = ConstantFP::get(getGlobalContext(), APFloat(1.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
Value *NextVar = Builder.CreateAdd(Variable, StepVal, "nextvar");
|
Value *NextVar = Builder.CreateFAdd(Variable, StepVal, "nextvar");
|
||||||
|
|
||||||
// Compute the end condition.
|
// Compute the end condition.
|
||||||
Value *EndCond = End->Codegen();
|
Value *EndCond = End->Codegen();
|
||||||
|
@ -828,7 +828,7 @@ Value *ForExprAST::Codegen() {
|
|||||||
// Reload, increment, and restore the alloca. This handles the case where
|
// Reload, increment, and restore the alloca. This handles the case where
|
||||||
// the body of the loop mutates the variable.
|
// the body of the loop mutates the variable.
|
||||||
Value *CurVar = Builder.CreateLoad(Alloca, VarName.c_str());
|
Value *CurVar = Builder.CreateLoad(Alloca, VarName.c_str());
|
||||||
Value *NextVar = Builder.CreateAdd(CurVar, StepVal, "nextvar");
|
Value *NextVar = Builder.CreateFAdd(CurVar, StepVal, "nextvar");
|
||||||
Builder.CreateStore(NextVar, Alloca);
|
Builder.CreateStore(NextVar, Alloca);
|
||||||
|
|
||||||
// Convert condition to a bool by comparing equal to 0.0.
|
// Convert condition to a bool by comparing equal to 0.0.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user