diff options
| author | Nagi5Yeq <wu@x-nagi.com> | 2020-06-01 21:34:58 +0800 |
|---|---|---|
| committer | Nagi5Yeq <wu@x-nagi.com> | 2020-06-01 21:34:58 +0800 |
| commit | cd1466f30c146e12faa0db7e1b53b508bf2274c6 (patch) | |
| tree | d938d02d17bbf4949b0dc1d21dee861afe171bdc /node | |
| parent | f90115fba35887aea8d4064b57f4909cd6937134 (diff) | |
64 bit support
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 { |
