Basic TBAA.
Separate load/store of register, memory, runtime information, and stack
temp.
Change-Id: I9d1eadac718c48f43839b0762460defc6c641ae4
diff --git a/src/compiler_llvm/dalvik_reg.cc b/src/compiler_llvm/dalvik_reg.cc
index 0ed6089..3d87a43 100644
--- a/src/compiler_llvm/dalvik_reg.cc
+++ b/src/compiler_llvm/dalvik_reg.cc
@@ -132,7 +132,7 @@
switch (space) {
case kReg:
case kField:
- return irb_.CreateLoad(GetAddr(jty, space));
+ return irb_.CreateLoad(GetAddr(jty, space), kTBAARegister);
case kAccurate:
case kArray:
@@ -148,7 +148,7 @@
// NOTE: In array type space, boolean is truncated from i32 to i8, while
// in accurate type space, boolean is truncated from i32 to i1.
// For the other cases, array type space is equal to accurate type space.
- return RegCat1Trunc(irb_.CreateLoad(GetAddr(jty, space)),
+ return RegCat1Trunc(irb_.CreateLoad(GetAddr(jty, space), kTBAARegister),
irb_.getJType(jty, space));
case kInt:
@@ -156,7 +156,7 @@
case kFloat:
case kDouble:
case kObject:
- return irb_.CreateLoad(GetAddr(jty, space));
+ return irb_.CreateLoad(GetAddr(jty, space), kTBAARegister);
}
}
@@ -171,7 +171,7 @@
switch (space) {
case kReg:
case kField:
- irb_.CreateStore(value, GetAddr(jty, space));
+ irb_.CreateStore(value, GetAddr(jty, space), kTBAARegister);
return;
case kAccurate:
@@ -185,7 +185,7 @@
// NOTE: In accurate type space, we have to zero extend boolean from
// i1 to i32, and char from i16 to i32. In array type space, we have
// to zero extend boolean from i8 to i32, and char from i16 to i32.
- irb_.CreateStore(RegCat1ZExt(value), GetAddr(jty, space));
+ irb_.CreateStore(RegCat1ZExt(value), GetAddr(jty, space), kTBAARegister);
break;
case kByte:
@@ -193,7 +193,7 @@
// NOTE: In accurate type space, we have to signed extend byte from
// i8 to i32, and short from i16 to i32. In array type space, we have
// to sign extend byte from i8 to i32, and short from i16 to i32.
- irb_.CreateStore(RegCat1SExt(value), GetAddr(jty, space));
+ irb_.CreateStore(RegCat1SExt(value), GetAddr(jty, space), kTBAARegister);
break;
case kInt:
@@ -201,7 +201,7 @@
case kFloat:
case kDouble:
case kObject:
- irb_.CreateStore(value, GetAddr(jty, space));
+ irb_.CreateStore(value, GetAddr(jty, space), kTBAARegister);
break;
}
}
@@ -242,7 +242,7 @@
if (jty == kObject) {
DCHECK_NE(reg_shadow_frame_, static_cast<llvm::Value*>(NULL))
<< "Didn't allocate shadow frame entry.";
- irb_.CreateStore(value, reg_shadow_frame_);
+ irb_.CreateStore(value, reg_shadow_frame_, kTBAARuntimeInfo);
}
}