diff -r 095d2f074f89ba34bec0c8d96e54a048ce24ff93 -r 06cdd5943d480e38aec7de30acc29d07acceaead OpenGTL/GTLCore/Debug.cpp --- a/OpenGTL/GTLCore/Debug.cpp Thu Jun 07 21:10:01 2012 +1000 +++ b/OpenGTL/GTLCore/Debug.cpp Sat Dec 29 12:25:51 2012 +0100 @@ -25,11 +25,7 @@ #include #include #include -#ifdef LLVM_27_OR_28 -#include -#else #include -#endif #include #include "Function.h" @@ -450,12 +446,17 @@ #endif namespace llvm { +// Printing of types. +static inline raw_ostream &operator<<(raw_ostream &OS, const Type &T) { + T.print(OS); + return OS; +} #define MAKE_OPERATOR(_type_) \ std::ostream& operator<< (std::ostream& ostr, const llvm::_type_& val) \ { \ std::string str; \ llvm::raw_string_ostream rs(str); \ - rs << &val; \ + rs << val; \ rs.flush(); \ ostr << str; \ return ostr; \ diff -r 06cdd5943d480e38aec7de30acc29d07acceaead -r e150672a54adaa0f09ff123a9c5b8973fe399e6c CMakeLists.txt --- a/CMakeLists.txt Sat Dec 29 12:25:51 2012 +0100 +++ b/CMakeLists.txt Sat Dec 29 12:27:12 2012 +0100 @@ -78,8 +78,8 @@ FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "native bitwriter linker bitreader jit interpreter support ipo" LLVM_LIBS LLVM_NATIVE_OBJECTS ) endif(MSVC) -if( NOT MSVC AND NOT (LLVM_VERSION STREQUAL "3.1" OR LLVM_VERSION STREQUAL "3.0" ) ) # There is no way with MSVC to know the llvm version - message(FATAL_ERROR "LLVM 3.0 or 3.1 is required.") +if( NOT MSVC AND NOT (LLVM_VERSION STREQUAL "3.1" OR LLVM_VERSION STREQUAL "3.0" OR LLVM_VERSION STREQUAL "3.2svn" OR LLVM_VERSION STREQUAL "3.2" ) ) # There is no way with MSVC to know the llvm version + message(FATAL_ERROR "LLVM 3.0 or 3.1 or 3.2 is required.") endif() if(MSVC) diff -r 06cdd5943d480e38aec7de30acc29d07acceaead -r e150672a54adaa0f09ff123a9c5b8973fe399e6c OpenCTL/OpenCTL/Program.cpp --- a/OpenCTL/OpenCTL/Program.cpp Sat Dec 29 12:25:51 2012 +0100 +++ b/OpenCTL/OpenCTL/Program.cpp Sat Dec 29 12:27:12 2012 +0100 @@ -29,7 +29,6 @@ #include #include #include -#include #include // GTLCore diff -r 06cdd5943d480e38aec7de30acc29d07acceaead -r e150672a54adaa0f09ff123a9c5b8973fe399e6c OpenGTL/GTLCore/AST/Statement.cpp --- a/OpenGTL/GTLCore/AST/Statement.cpp Sat Dec 29 12:25:51 2012 +0100 +++ b/OpenGTL/GTLCore/AST/Statement.cpp Sat Dec 29 12:27:12 2012 +0100 @@ -287,7 +287,7 @@ std::vector params; params.push_back( llvm::Type::getInt32Ty(_context.llvmContext())); llvm::FunctionType* definitionType = llvm::FunctionType::get( llvm::Type::getVoidTy(_context.llvmContext()), params, true ); - llvm::Function* func = dynamic_cast( _context.llvmModule()->getOrInsertFunction("print", definitionType)); + llvm::Function* func = llvm::dyn_cast( _context.llvmModule()->getOrInsertFunction("print", definitionType)); std::vector values; values.push_back( _context.codeGenerator()->integerToConstant( _context.llvmContext(), gtl_uint32(m_expressions.size()) )); diff -r 06cdd5943d480e38aec7de30acc29d07acceaead -r e150672a54adaa0f09ff123a9c5b8973fe399e6c OpenGTL/GTLCore/Function_p.cpp --- a/OpenGTL/GTLCore/Function_p.cpp Sat Dec 29 12:25:51 2012 +0100 +++ b/OpenGTL/GTLCore/Function_p.cpp Sat Dec 29 12:27:12 2012 +0100 @@ -77,7 +77,7 @@ const llvm::Function* func = _functionToCopy->d->data->function(); llvm::FunctionType *FTy = llvm::cast(llvm::cast(func->getType())->getElementType()); - llvm::Function* function = dynamic_cast( _llvmModule->getOrInsertFunction( (const std::string&)_symbolName, FTy) ); + llvm::Function* function = llvm::dyn_cast( _llvmModule->getOrInsertFunction( (const std::string&)_symbolName, FTy) ); GTLCore::Function::Data* data = new GTLCore::Function::Data( _functionToCopy->parameters(), _functionToCopy->d->data->minimumParameters() ); data->setFunction( function ); data->setModule( _module ); @@ -137,7 +137,7 @@ } llvmArguments.push_back( type ); } - llvm::Function* function = dynamic_cast( _llvmModule->getOrInsertFunction( (const std::string&)_symbolName, llvm::FunctionType::get( retType->d->asArgumentType(_context), llvmArguments, false ) ) ); + llvm::Function* function = llvm::dyn_cast( _llvmModule->getOrInsertFunction( (const std::string&)_symbolName, llvm::FunctionType::get( retType->d->asArgumentType(_context), llvmArguments, false ) ) ); GTLCore::Function::Data* data = new GTLCore::Function::Data(arguments, minimumParameters == -1 ? arguments.size() : minimumParameters ); data->setFunction( function ); data->setModule( _module ); diff -r 06cdd5943d480e38aec7de30acc29d07acceaead -r e150672a54adaa0f09ff123a9c5b8973fe399e6c OpenGTL/GTLCore/LLVMBackend/CodeGenerator_p.cpp --- a/OpenGTL/GTLCore/LLVMBackend/CodeGenerator_p.cpp Sat Dec 29 12:25:51 2012 +0100 +++ b/OpenGTL/GTLCore/LLVMBackend/CodeGenerator_p.cpp Sat Dec 29 12:27:12 2012 +0100 @@ -209,16 +209,16 @@ if( constant->getType() == llvm::Type::getInt32Ty(constant->getContext() ) ) { GTL_ASSERT(_type == Type::Integer32 or _type == Type::UnsignedInteger32 ); - return gtl_int32(dynamic_cast( constant )->getValue().getLimitedValue()); + return gtl_int32(llvm::dyn_cast( constant )->getValue().getLimitedValue()); } else if ( constant->getType() == llvm::Type::getFloatTy(constant->getContext()) ) { GTL_ASSERT(_type == Type::Float32 or _type == Type::Float16 ); - return dynamic_cast( constant )->getValueAPF().convertToFloat(); + return llvm::dyn_cast( constant )->getValueAPF().convertToFloat(); } else if ( constant->getType() == llvm::Type::getInt1Ty(constant->getContext()) ) { GTL_ASSERT(_type == Type::Boolean ); - return dynamic_cast( constant )->getValue().getLimitedValue() != 0; + return llvm::dyn_cast( constant )->getValue().getLimitedValue() != 0; } else if( constant->getType()->getTypeID() == llvm::Type::StructTyID ) { - llvm::ConstantStruct* cs = dynamic_cast( constant ); + llvm::ConstantStruct* cs = llvm::dyn_cast( constant ); switch(_type->dataType()) { case Type::STRUCTURE: @@ -235,12 +235,12 @@ { GTL_ASSERT( cs->getNumOperands() == 2 + STRUCT_FIRST_ELEMENT ); GTL_ASSERT( cs->getOperand(1)->getType() == llvm::Type::getInt32Ty(constant->getContext()) ); - std::size_t sizeArray = std::size_t(dynamic_cast( cs->getOperand(1))->getValue().getLimitedValue()); - llvm::ConstantExpr* expr = dynamic_cast(cs->getOperand(2)); + std::size_t sizeArray = std::size_t(llvm::dyn_cast( cs->getOperand(1))->getValue().getLimitedValue()); + llvm::ConstantExpr* expr = llvm::dyn_cast(cs->getOperand(2)); GTL_ASSERT(expr); - llvm::GlobalVariable* arrayGV = dynamic_cast(expr->getOperand(0)); + llvm::GlobalVariable* arrayGV = llvm::dyn_cast(expr->getOperand(0)); GTL_ASSERT(arrayGV); - llvm::ConstantArray* array = dynamic_cast(arrayGV->getInitializer()); + llvm::ConstantArray* array = llvm::dyn_cast(arrayGV->getInitializer()); GTL_ASSERT(array); GTL_ASSERT(array->getNumOperands() == sizeArray); std::vector< Value > values; @@ -254,7 +254,7 @@ GTL_ABORT("Unsupported type"); } } else if( constant->getType()->getTypeID() == llvm::Type::PointerTyID) { - return constantToValue( dynamic_cast(constant)->getInitializer() , _type); + return constantToValue( llvm::dyn_cast(constant)->getInitializer() , _type); } else { GTL_ABORT("Unimplemented"); } @@ -316,7 +316,7 @@ llvm::Value* CodeGenerator::convertValueTo(llvm::BasicBlock* _currentBlock, llvm::Value* _value, const Type* _valueType, const Type* _targetType) { GTL_DEBUG("Convert value " << *_value << " from " << *_valueType << " to " << *_targetType); - llvm::Constant* _constant = dynamic_cast(_value); + llvm::Constant* _constant = llvm::dyn_cast(_value); if(_constant) { return convertConstantTo( _constant, _valueType, _targetType); @@ -386,7 +386,7 @@ { std::vector< llvm::Type*> llvmArguments; llvmArguments.push_back( llvm::Type::getFloatTy(_generationContext.llvmContext()) ); - llvm::Function* func = dynamic_cast( _generationContext.llvmModule()->getOrInsertFunction( "_Z10float2halff", + llvm::Function* func = llvm::dyn_cast( _generationContext.llvmModule()->getOrInsertFunction( "_Z10float2halff", llvm::FunctionType::get( llvm::Type::getInt16Ty(_generationContext.llvmContext()) , llvmArguments, false ) ) ); std::vector convertedParams; convertedParams.push_back( convertValueTo( currentBlock, value, _valueType, Type::Float32 ) ); @@ -397,7 +397,7 @@ { std::vector llvmArguments; llvmArguments.push_back( llvm::Type::getInt16Ty(_generationContext.llvmContext()) ); - llvm::Function* func = dynamic_cast( _generationContext.llvmModule()->getOrInsertFunction( "_Z10half2floatt", + llvm::Function* func = llvm::dyn_cast( _generationContext.llvmModule()->getOrInsertFunction( "_Z10half2floatt", llvm::FunctionType::get( llvm::Type::getFloatTy(_generationContext.llvmContext()) , llvmArguments, false ) ) ); std::vector convertedParams; convertedParams.push_back( convertValueTo( currentBlock, value, Type::Float16, Type::Integer16 ) ); @@ -461,14 +461,14 @@ { GTL_DEBUG(*constant); GTL_DEBUG(*constant->getType()); - llvm::ConstantStruct* arrayConstant = dynamic_cast(constant->getOperand(0)); + llvm::ConstantStruct* arrayConstant = llvm::dyn_cast(constant->getOperand(0)); GTL_ASSERT(arrayConstant); GTL_ASSERT(constantType->dataType() == Type::ARRAY ); GTL_ASSERT(type->dataType() == Type::VECTOR ); GTL_ASSERT(arrayConstant->getNumOperands() == 3 ); llvm::Constant* values = llvm::cast(llvm::cast(arrayConstant->getOperand(2)->getOperand(0))->getOperand(0)); GTL_DEBUG(*values); - GTL_ASSERT(dynamic_cast(values) ); + GTL_ASSERT(llvm::dyn_cast(values) ); std::vector constants; for(unsigned int i = 0; i < values->getNumOperands(); ++i ) { diff -r 06cdd5943d480e38aec7de30acc29d07acceaead -r e150672a54adaa0f09ff123a9c5b8973fe399e6c OpenGTL/GTLCore/LLVMBackend/ExpressionResult_p.cpp --- a/OpenGTL/GTLCore/LLVMBackend/ExpressionResult_p.cpp Sat Dec 29 12:25:51 2012 +0100 +++ b/OpenGTL/GTLCore/LLVMBackend/ExpressionResult_p.cpp Sat Dec 29 12:27:12 2012 +0100 @@ -108,7 +108,7 @@ llvm::Constant* ExpressionResult::constant() const { - GTL_ASSERT( dynamic_cast(d->valueOrConstant.value)); + GTL_ASSERT( llvm::dyn_cast(d->valueOrConstant.value)); if(d->isConstant) return d->valueOrConstant.constant; return 0; } diff -r 06cdd5943d480e38aec7de30acc29d07acceaead -r e150672a54adaa0f09ff123a9c5b8973fe399e6c OpenGTL/GTLCore/ModuleData_p.cpp --- a/OpenGTL/GTLCore/ModuleData_p.cpp Sat Dec 29 12:25:51 2012 +0100 +++ b/OpenGTL/GTLCore/ModuleData_p.cpp Sat Dec 29 12:27:12 2012 +0100 @@ -23,7 +23,6 @@ #include #include -#include #include #include #include