summaryrefslogtreecommitdiff
path: root/node/ExprNode.cc
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/ExprNode.cc
parentf90115fba35887aea8d4064b57f4909cd6937134 (diff)
64 bit support
Diffstat (limited to 'node/ExprNode.cc')
-rw-r--r--node/ExprNode.cc8
1 files changed, 5 insertions, 3 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);