Skip to content

Instantly share code, notes, and snippets.

@MSNexploder
Created June 9, 2011 00:23
Show Gist options
  • Save MSNexploder/1015782 to your computer and use it in GitHub Desktop.
Save MSNexploder/1015782 to your computer and use it in GitHub Desktop.
diff --git a/vm/llvm/passes.cpp b/vm/llvm/passes.cpp
index 3f88cb1..9d10130 100644
--- a/vm/llvm/passes.cpp
+++ b/vm/llvm/passes.cpp
@@ -348,9 +348,15 @@ namespace {
}
virtual
+#if __clang_major__ == 2 && __clang_minor__ == 9
+ AliasAnalysis::AliasResult alias(const Location &locA, const Location &locB)
+ {
+ const Value *V1 = locA.Ptr;
+#else
AliasAnalysis::AliasResult alias(const Value *V1, unsigned V1Size,
const Value *V2, unsigned V2Size)
{
+#endif
// Indicate that tagged fixnums can't alias anything.
if(const IntToPtrInst* ip = dyn_cast<IntToPtrInst>(V1)) {
if(ip->getType() == object_type_) {
@@ -363,19 +369,32 @@ namespace {
}
}
+#if __clang_major__ == 2 && __clang_minor__ == 9
+ return AliasAnalysis::alias(locA, locB);
+#else
return AliasAnalysis::alias(V1, V1Size, V2, V2Size);
+#endif
}
virtual
+#if __clang_major__ == 2 && __clang_minor__ == 9
+ AliasAnalysis::ModRefResult getModRefInfo(ImmutableCallSite cs,
+ const Location &loc) {
+#else
AliasAnalysis::ModRefResult getModRefInfo(ImmutableCallSite cs,
const Value* val, unsigned size) {
+#endif
if(const Function* func = cs.getCalledFunction()) {
if(func->getName() == "rbx_float_allocate") {
return NoModRef;
}
}
+#if __clang_major__ == 2 && __clang_minor__ == 9
+ return AliasAnalysis::getModRefInfo(cs, loc);
+ }
+#else
return AliasAnalysis::getModRefInfo(cs, val, size);
}
@@ -385,11 +404,16 @@ namespace {
virtual
AliasAnalysis::ModRefResult getModRefInfo(ImmutableCallSite CS1,
ImmutableCallSite CS2) {
-
return AliasAnalysis::getModRefInfo(CS1, CS2);
}
+#endif
- virtual bool pointsToConstantMemory(const Value* val) {
+#if __clang_major__ == 2 && __clang_minor__ == 9
+ virtual bool pointsToConstantMemory(const Location &loc, bool orLocal = false) {
+ const Value *val = loc.Ptr;
+#else
+ virtual bool pointsToConstantMemory(const Value *val) {
+#endif
LLVMContext& ctx = val->getContext();
if(const GetElementPtrInst* gep = dyn_cast<GetElementPtrInst>(val)) {
@@ -416,7 +440,11 @@ namespace {
return true;
}
}
+#if __clang_major__ == 2 && __clang_minor__ == 9
+ return AliasAnalysis::pointsToConstantMemory(loc, orLocal);
+#else
return AliasAnalysis::pointsToConstantMemory(val);
+#endif
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment