mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Begin the painful process of tearing apart the rat'ss nest that is Constants.cpp and ConstantFold.cpp.
This involves temporarily hard wiring some parts to use the global context. This isn't ideal, but it's the only way I could figure out to make this process vaguely incremental. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75445 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -284,14 +284,17 @@ TEST_F(ValueHandle, CallbackVH_DeletionCanRAUW) {
|
||||
public:
|
||||
int DeletedCalls;
|
||||
Value *AURWArgument;
|
||||
LLVMContext *Context;
|
||||
|
||||
RecoveringVH() : DeletedCalls(0), AURWArgument(NULL) {}
|
||||
RecoveringVH() : DeletedCalls(0), AURWArgument(NULL),
|
||||
Context(&getGlobalContext()) {}
|
||||
RecoveringVH(Value *V)
|
||||
: CallbackVH(V), DeletedCalls(0), AURWArgument(NULL) {}
|
||||
: CallbackVH(V), DeletedCalls(0), AURWArgument(NULL),
|
||||
Context(&getGlobalContext()) {}
|
||||
|
||||
private:
|
||||
virtual void deleted() {
|
||||
getValPtr()->replaceAllUsesWith(Constant::getNullValue(Type::Int32Ty));
|
||||
getValPtr()->replaceAllUsesWith(Context->getNullValue(Type::Int32Ty));
|
||||
setValPtr(NULL);
|
||||
}
|
||||
virtual void allUsesReplacedWith(Value *new_value) {
|
||||
@ -307,11 +310,13 @@ TEST_F(ValueHandle, CallbackVH_DeletionCanRAUW) {
|
||||
RecoveringVH RVH;
|
||||
RVH = BitcastV.get();
|
||||
std::auto_ptr<BinaryOperator> BitcastUser(
|
||||
BinaryOperator::CreateAdd(RVH, Constant::getNullValue(Type::Int32Ty)));
|
||||
BinaryOperator::CreateAdd(RVH,
|
||||
getGlobalContext().getNullValue(Type::Int32Ty)));
|
||||
EXPECT_EQ(BitcastV.get(), BitcastUser->getOperand(0));
|
||||
BitcastV.reset(); // Would crash without the ValueHandler.
|
||||
EXPECT_EQ(Constant::getNullValue(Type::Int32Ty), RVH.AURWArgument);
|
||||
EXPECT_EQ(Constant::getNullValue(Type::Int32Ty), BitcastUser->getOperand(0));
|
||||
EXPECT_EQ(getGlobalContext().getNullValue(Type::Int32Ty), RVH.AURWArgument);
|
||||
EXPECT_EQ(getGlobalContext().getNullValue(Type::Int32Ty),
|
||||
BitcastUser->getOperand(0));
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user