diff options
Diffstat (limited to 'node')
| -rw-r--r-- | node/ExprNode.cc | 8 | ||||
| -rw-r--r-- | node/LiteralNode.hh | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/node/ExprNode.cc b/node/ExprNode.cc index e75eda5..c0a3f41 100644 --- a/node/ExprNode.cc +++ b/node/ExprNode.cc @@ -126,10 +126,11 @@ Value ArrayAccessNode::CodeGen() { Value indices[2] = {llvm::ConstantInt::get( manager->GetPointerIndexType()->GetLLVMType(), 0)}; if (array->GetIsZeroStarted() == false) { - Value ConvertedRight = + Value CastedRight = manager->CreateCast(IndexType, RightType, right, context_); auto AdjustedRight = IndexType->CreateBinaryOperation( - BinaryOperator::SUB, right, array->GetIndexStart(), context_); + BinaryOperator::SUB, CastedRight, array->GetIndexStart(), + context_); indices[1] = AdjustedRight; } else { indices[1] = right; @@ -201,7 +202,8 @@ Value MemberAccessNode::CodeGen() { int MemberIndex; std::shared_ptr<Type> MemberType; std::tie(MemberIndex, MemberType) = LeftInner->GetMember(rhs_); - llvm::Type* IndexLLLVMType = manager->GetPointerIndexType()->GetLLVMType(); + llvm::Type* IndexLLLVMType = + manager->GetRecordMemberIndexType()->GetLLVMType(); Value indices[2] = {llvm::ConstantInt::get(IndexLLLVMType, 0), llvm::ConstantInt::get(IndexLLLVMType, MemberIndex)}; type_ = manager->GetPointerType(MemberType); diff --git a/node/LiteralNode.hh b/node/LiteralNode.hh index 06f2989..f93c171 100644 --- a/node/LiteralNode.hh +++ b/node/LiteralNode.hh @@ -28,7 +28,7 @@ LiteralNode<T>::LiteralNode(Context* context, std::shared_ptr<Type> type, using BooleanLiteralNode = LiteralNode<bool>; using CharLiteralNode = LiteralNode<char>; -using IntegerLiteralNode = LiteralNode<int>; +using IntegerLiteralNode = LiteralNode<long long>; using RealLiteralNode = LiteralNode<float>; class StringLiteralNode : public ExprNode { |
