mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-16 14:31:59 +00:00
Fix bug: test/Regression/Transforms/SCCP/2002-05-03-NotOperator.ll
by using the ~ operator instead of ! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2458 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b6df79a6b2
commit
905f311d05
@ -225,6 +225,8 @@ struct PointerRules : public TemplateRules<ConstantPointer, PointerRules> {
|
||||
|
||||
inline static ConstantPointer *CastToPointer(const ConstantPointer *V,
|
||||
const PointerType *PTy) {
|
||||
if (V->getType() == PTy)
|
||||
return const_cast<ConstantPointer*>(V); // Allow cast %PTy %ptr to %PTy
|
||||
if (V->isNullValue())
|
||||
return ConstantPointerNull::get(PTy);
|
||||
return 0; // Can't const prop other types of pointers
|
||||
@ -245,10 +247,6 @@ struct DirectRules
|
||||
: public TemplateRules<ConstantClass,
|
||||
DirectRules<ConstantClass, BuiltinType, Ty> > {
|
||||
|
||||
inline static Constant *Not(const ConstantClass *V) {
|
||||
return ConstantClass::get(*Ty, !(BuiltinType)V->getValue());;
|
||||
}
|
||||
|
||||
inline static Constant *Add(const ConstantClass *V1,
|
||||
const ConstantClass *V2) {
|
||||
BuiltinType Result = (BuiltinType)V1->getValue() +
|
||||
@ -310,6 +308,22 @@ struct DirectRules
|
||||
#undef DEF_CAST
|
||||
};
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// DirectIntRules Class
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// DirectIntRules provides implementations of functions that are valid on
|
||||
// integer types, but not all types in general.
|
||||
//
|
||||
template <class ConstantClass, class BuiltinType, Type **Ty>
|
||||
struct DirectIntRules : public DirectRules<ConstantClass, BuiltinType, Ty> {
|
||||
inline static Constant *Not(const ConstantClass *V) {
|
||||
return ConstantClass::get(*Ty, ~(BuiltinType)V->getValue());;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// DirectRules Subclasses
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -330,21 +344,21 @@ Annotation *ConstRules::find(AnnotationID AID, const Annotable *TyA, void *) {
|
||||
case Type::BoolTyID: return new BoolRules();
|
||||
case Type::PointerTyID: return new PointerRules();
|
||||
case Type::SByteTyID:
|
||||
return new DirectRules<ConstantSInt, signed char , &Type::SByteTy>();
|
||||
return new DirectIntRules<ConstantSInt, signed char , &Type::SByteTy>();
|
||||
case Type::UByteTyID:
|
||||
return new DirectRules<ConstantUInt, unsigned char , &Type::UByteTy>();
|
||||
return new DirectIntRules<ConstantUInt, unsigned char , &Type::UByteTy>();
|
||||
case Type::ShortTyID:
|
||||
return new DirectRules<ConstantSInt, signed short, &Type::ShortTy>();
|
||||
return new DirectIntRules<ConstantSInt, signed short, &Type::ShortTy>();
|
||||
case Type::UShortTyID:
|
||||
return new DirectRules<ConstantUInt, unsigned short, &Type::UShortTy>();
|
||||
return new DirectIntRules<ConstantUInt, unsigned short, &Type::UShortTy>();
|
||||
case Type::IntTyID:
|
||||
return new DirectRules<ConstantSInt, signed int , &Type::IntTy>();
|
||||
return new DirectIntRules<ConstantSInt, signed int , &Type::IntTy>();
|
||||
case Type::UIntTyID:
|
||||
return new DirectRules<ConstantUInt, unsigned int , &Type::UIntTy>();
|
||||
return new DirectIntRules<ConstantUInt, unsigned int , &Type::UIntTy>();
|
||||
case Type::LongTyID:
|
||||
return new DirectRules<ConstantSInt, int64_t , &Type::LongTy>();
|
||||
return new DirectIntRules<ConstantSInt, int64_t , &Type::LongTy>();
|
||||
case Type::ULongTyID:
|
||||
return new DirectRules<ConstantUInt, uint64_t , &Type::ULongTy>();
|
||||
return new DirectIntRules<ConstantUInt, uint64_t , &Type::ULongTy>();
|
||||
case Type::FloatTyID:
|
||||
return new DirectRules<ConstantFP , float , &Type::FloatTy>();
|
||||
case Type::DoubleTyID:
|
||||
|
Loading…
x
Reference in New Issue
Block a user