summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorNagi5Yeq <wu@x-nagi.com>2020-06-01 21:34:58 +0800
committerNagi5Yeq <wu@x-nagi.com>2020-06-01 21:34:58 +0800
commitcd1466f30c146e12faa0db7e1b53b508bf2274c6 (patch)
treed938d02d17bbf4949b0dc1d21dee861afe171bdc /node
parentf90115fba35887aea8d4064b57f4909cd6937134 (diff)
64 bit support
Diffstat (limited to 'node')
-rw-r--r--node/ExprNode.cc8
-rw-r--r--node/LiteralNode.hh2
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 {