diff options
author | Tim Murray <timmurray@google.com> | 2014-04-10 15:49:08 -0700 |
---|---|---|
committer | Tim Murray <timmurray@google.com> | 2014-04-25 20:26:10 +0000 |
commit | ee4016d1247d3fbe50822de279d3da273d8aef4c (patch) | |
tree | 4e3ecc54070d38d679bd701da6d5a66995b3a23a | |
parent | 2fded9d7407e1c6ded9b82c07e1d0ffbf21d5931 (diff) | |
download | android_frameworks_compile_slang-ee4016d1247d3fbe50822de279d3da273d8aef4c.tar.gz android_frameworks_compile_slang-ee4016d1247d3fbe50822de279d3da273d8aef4c.tar.bz2 android_frameworks_compile_slang-ee4016d1247d3fbe50822de279d3da273d8aef4c.zip |
Update Slang for Clang/LLVM 3.5a.
Change-Id: Icd59efa1197098076555c505c31939866e504a83
-rw-r--r-- | Android.mk | 2 | ||||
-rw-r--r-- | BitWriter_2_9/BitcodeWriter.cpp | 8 | ||||
-rw-r--r-- | BitWriter_2_9_func/BitcodeWriter.cpp | 10 | ||||
-rw-r--r-- | BitWriter_3_2/BitcodeWriter.cpp | 14 | ||||
-rw-r--r-- | llvm-rs-as.cpp | 10 | ||||
-rw-r--r-- | slang.cpp | 12 | ||||
-rw-r--r-- | slang_backend.cpp | 12 | ||||
-rw-r--r-- | slang_diagnostic_buffer.h | 1 | ||||
-rw-r--r-- | slang_rs.cpp | 2 | ||||
-rw-r--r-- | slang_rs_backend.cpp | 2 | ||||
-rw-r--r-- | slang_rs_check_ast.cpp | 2 | ||||
-rw-r--r-- | slang_rs_context.cpp | 15 | ||||
-rw-r--r-- | slang_rs_context.h | 40 | ||||
-rw-r--r-- | slang_rs_export_foreach.cpp | 8 | ||||
-rw-r--r-- | slang_rs_export_func.cpp | 2 | ||||
-rw-r--r-- | slang_rs_export_type.cpp | 3 | ||||
-rw-r--r-- | slang_rs_export_type.h | 2 | ||||
-rw-r--r-- | slang_rs_reflection.cpp | 84 |
18 files changed, 112 insertions, 117 deletions
@@ -77,7 +77,7 @@ LOCAL_SRC_FILES := \ LOCAL_C_INCLUDES += frameworks/compile/libbcc/include -LOCAL_LDLIBS := -ldl -lpthread +LOCAL_LDLIBS := -ldl -lpthread -lc++ include $(CLANG_HOST_BUILD_MK) include $(CLANG_TBLGEN_RULES_MK) diff --git a/BitWriter_2_9/BitcodeWriter.cpp b/BitWriter_2_9/BitcodeWriter.cpp index b87cad9..729b779 100644 --- a/BitWriter_2_9/BitcodeWriter.cpp +++ b/BitWriter_2_9/BitcodeWriter.cpp @@ -394,16 +394,12 @@ static unsigned getEncodedLinkage(const GlobalValue *GV) { case GlobalValue::AppendingLinkage: return 2; case GlobalValue::InternalLinkage: return 3; case GlobalValue::LinkOnceAnyLinkage: return 4; - case GlobalValue::DLLImportLinkage: return 5; - case GlobalValue::DLLExportLinkage: return 6; case GlobalValue::ExternalWeakLinkage: return 7; case GlobalValue::CommonLinkage: return 8; case GlobalValue::PrivateLinkage: return 9; case GlobalValue::WeakODRLinkage: return 10; case GlobalValue::LinkOnceODRLinkage: return 11; case GlobalValue::AvailableExternallyLinkage: return 12; - case GlobalValue::LinkerPrivateLinkage: return 13; - case GlobalValue::LinkerPrivateWeakLinkage: return 14; } llvm_unreachable("Invalid linkage"); } @@ -426,8 +422,8 @@ static void WriteModuleInfo(const Module *M, if (!M->getTargetTriple().empty()) WriteStringRecord(bitc::MODULE_CODE_TRIPLE, M->getTargetTriple(), 0/*TODO*/, Stream); - if (!M->getDataLayout().empty()) - WriteStringRecord(bitc::MODULE_CODE_DATALAYOUT, M->getDataLayout(), + if (M->getDataLayout() != nullptr) + WriteStringRecord(bitc::MODULE_CODE_DATALAYOUT, M->getDataLayout()->getStringRepresentation(), 0/*TODO*/, Stream); if (!M->getModuleInlineAsm().empty()) WriteStringRecord(bitc::MODULE_CODE_ASM, M->getModuleInlineAsm(), diff --git a/BitWriter_2_9_func/BitcodeWriter.cpp b/BitWriter_2_9_func/BitcodeWriter.cpp index e3a9954..3577398 100644 --- a/BitWriter_2_9_func/BitcodeWriter.cpp +++ b/BitWriter_2_9_func/BitcodeWriter.cpp @@ -348,16 +348,12 @@ static unsigned getEncodedLinkage(const GlobalValue *GV) { case GlobalValue::AppendingLinkage: return 2; case GlobalValue::InternalLinkage: return 3; case GlobalValue::LinkOnceAnyLinkage: return 4; - case GlobalValue::DLLImportLinkage: return 5; - case GlobalValue::DLLExportLinkage: return 6; case GlobalValue::ExternalWeakLinkage: return 7; case GlobalValue::CommonLinkage: return 8; case GlobalValue::PrivateLinkage: return 9; case GlobalValue::WeakODRLinkage: return 10; case GlobalValue::LinkOnceODRLinkage: return 11; case GlobalValue::AvailableExternallyLinkage: return 12; - case GlobalValue::LinkerPrivateLinkage: return 13; - case GlobalValue::LinkerPrivateWeakLinkage: return 14; } llvm_unreachable("Invalid linkage"); } @@ -380,8 +376,8 @@ static void WriteModuleInfo(const Module *M, if (!M->getTargetTriple().empty()) WriteStringRecord(bitc::MODULE_CODE_TRIPLE, M->getTargetTriple(), 0/*TODO*/, Stream); - if (!M->getDataLayout().empty()) - WriteStringRecord(bitc::MODULE_CODE_DATALAYOUT, M->getDataLayout(), + if (M->getDataLayout() != nullptr) + WriteStringRecord(bitc::MODULE_CODE_DATALAYOUT, M->getDataLayout()->getStringRepresentation(), 0/*TODO*/, Stream); if (!M->getModuleInlineAsm().empty()) WriteStringRecord(bitc::MODULE_CODE_ASM, M->getModuleInlineAsm(), @@ -1233,7 +1229,7 @@ static void WriteInstruction(const Instruction &I, unsigned InstID, Vals.push_back(VE.getValueID(I.getOperand(2))); // newval. Vals.push_back(cast<AtomicCmpXchgInst>(I).isVolatile()); Vals.push_back(GetEncodedOrdering( - cast<AtomicCmpXchgInst>(I).getOrdering())); + cast<AtomicCmpXchgInst>(I).getSuccessOrdering())); Vals.push_back(GetEncodedSynchScope( cast<AtomicCmpXchgInst>(I).getSynchScope())); break; diff --git a/BitWriter_3_2/BitcodeWriter.cpp b/BitWriter_3_2/BitcodeWriter.cpp index d5421c5..e551035 100644 --- a/BitWriter_3_2/BitcodeWriter.cpp +++ b/BitWriter_3_2/BitcodeWriter.cpp @@ -353,16 +353,12 @@ static unsigned getEncodedLinkage(const GlobalValue *GV) { case GlobalValue::AppendingLinkage: return 2; case GlobalValue::InternalLinkage: return 3; case GlobalValue::LinkOnceAnyLinkage: return 4; - case GlobalValue::DLLImportLinkage: return 5; - case GlobalValue::DLLExportLinkage: return 6; case GlobalValue::ExternalWeakLinkage: return 7; case GlobalValue::CommonLinkage: return 8; case GlobalValue::PrivateLinkage: return 9; case GlobalValue::WeakODRLinkage: return 10; case GlobalValue::LinkOnceODRLinkage: return 11; case GlobalValue::AvailableExternallyLinkage: return 12; - case GlobalValue::LinkerPrivateLinkage: return 13; - case GlobalValue::LinkerPrivateWeakLinkage: return 14; } llvm_unreachable("Invalid linkage"); } @@ -396,8 +392,8 @@ static void WriteModuleInfo(const Module *M, if (!M->getTargetTriple().empty()) WriteStringRecord(bitc::MODULE_CODE_TRIPLE, M->getTargetTriple(), 0/*TODO*/, Stream); - if (!M->getDataLayout().empty()) - WriteStringRecord(bitc::MODULE_CODE_DATALAYOUT, M->getDataLayout(), + if (!M->getDataLayoutStr().empty()) + WriteStringRecord(bitc::MODULE_CODE_DATALAYOUT, M->getDataLayoutStr(), 0/*TODO*/, Stream); if (!M->getModuleInlineAsm().empty()) WriteStringRecord(bitc::MODULE_CODE_ASM, M->getModuleInlineAsm(), @@ -1290,7 +1286,7 @@ static void WriteInstruction(const Instruction &I, unsigned InstID, Vals.push_back(VE.getValueID(I.getOperand(2))); // newval. Vals.push_back(cast<AtomicCmpXchgInst>(I).isVolatile()); Vals.push_back(GetEncodedOrdering( - cast<AtomicCmpXchgInst>(I).getOrdering())); + cast<AtomicCmpXchgInst>(I).getSuccessOrdering())); Vals.push_back(GetEncodedSynchScope( cast<AtomicCmpXchgInst>(I).getSynchScope())); break; @@ -1657,8 +1653,8 @@ static void WriteUseList(const Value *V, const llvm_3_2::ValueEnumerator &VE, UseList.reserve(UseListSize); for (Value::const_use_iterator I = V->use_begin(), E = V->use_end(); I != E; ++I) { - const User *U = *I; - UseList.push_back(U); + const Use &use = *I; + UseList.push_back(use.getUser()); } // Sort the copy based on the order read by the BitcodeReader. diff --git a/llvm-rs-as.cpp b/llvm-rs-as.cpp index fb19f61..0367e23 100644 --- a/llvm-rs-as.cpp +++ b/llvm-rs-as.cpp @@ -15,9 +15,10 @@ // //===----------------------------------------------------------------------===// +#include "llvm/ADT/OwningPtr.h" #include "llvm/IR/LLVMContext.h" -#include "llvm/Analysis/Verifier.h" -#include "llvm/Assembly/Parser.h" +#include "llvm/IR/Verifier.h" +#include "llvm/AsmParser/Parser.h" #include "llvm/Bitcode/ReaderWriter.h" #include "llvm/IR/Module.h" #include "llvm/Support/CommandLine.h" @@ -89,7 +90,7 @@ static void WriteOutputFile(const Module *M) { std::string ErrorInfo; OwningPtr<tool_output_file> Out (new tool_output_file(OutputFilename.c_str(), ErrorInfo, - llvm::sys::fs::F_Binary)); + llvm::sys::fs::F_None)); if (!ErrorInfo.empty()) { errs() << ErrorInfo << '\n'; exit(1); @@ -134,7 +135,8 @@ int main(int argc, char **argv) { if (!DisableVerify) { std::string Err; - if (verifyModule(*M.get(), ReturnStatusAction, &Err)) { + raw_string_ostream stream(Err); + if (verifyModule(*M.get(), &stream)) { errs() << argv[0] << ": assembly parsed, but does not verify as correct!\n"; errs() << Err; @@ -51,7 +51,7 @@ #include "llvm/Bitcode/ReaderWriter.h" // More force linking -#include "llvm/Linker.h" +#include "llvm/Linker/Linker.h" // Force linking all passes/vmcore stuffs to libslang.so #include "llvm/LinkAllIR.h" @@ -81,7 +81,7 @@ struct ForceSlangLinking { return; // llvm-rs-link needs following functions existing in libslang. - llvm::ParseBitcodeFile(NULL, llvm::getGlobalContext(), NULL); + llvm::parseBitcodeFile(NULL, llvm::getGlobalContext()); llvm::Linker::LinkModules(NULL, NULL, 0, NULL); // llvm-rs-cc need this. @@ -341,7 +341,7 @@ bool Slang::setOutput(const char *OutputFile) { case OT_Dependency: case OT_Assembly: case OT_LLVMAssembly: { - OS = OpenOutputFile(OutputFile, llvm::sys::fs::F_None, &Error, + OS = OpenOutputFile(OutputFile, llvm::sys::fs::F_Text, &Error, mDiagEngine); break; } @@ -350,7 +350,7 @@ bool Slang::setOutput(const char *OutputFile) { } case OT_Object: case OT_Bitcode: { - OS = OpenOutputFile(OutputFile, llvm::sys::fs::F_Binary, + OS = OpenOutputFile(OutputFile, llvm::sys::fs::F_None, &Error, mDiagEngine); break; } @@ -373,7 +373,7 @@ bool Slang::setDepOutput(const char *OutputFile) { std::string Error; mDOS.reset( - OpenOutputFile(OutputFile, llvm::sys::fs::F_None, &Error, mDiagEngine)); + OpenOutputFile(OutputFile, llvm::sys::fs::F_Text, &Error, mDiagEngine)); if (!Error.empty() || (mDOS.get() == NULL)) return false; @@ -404,7 +404,7 @@ int Slang::generateDepFile() { // Per-compilation needed initialization createPreprocessor(); - AttachDependencyFileGen(*mPP.get(), DepOpts); + clang::DependencyFileGenerator::CreateAndAttachToPreprocessor(*mPP.get(), DepOpts); // Inform the diagnostic client we are processing a source file mDiagClient->BeginSourceFile(LangOpts, mPP.get()); diff --git a/slang_backend.cpp b/slang_backend.cpp index b79ddec..0f5b4d5 100644 --- a/slang_backend.cpp +++ b/slang_backend.cpp @@ -34,7 +34,7 @@ #include "clang/Frontend/CodeGenOptions.h" #include "clang/Frontend/FrontendDiagnostic.h" -#include "llvm/Assembly/PrintModulePass.h" +#include "llvm/IR/IRPrintingPasses.h" #include "llvm/Bitcode/ReaderWriter.h" @@ -65,7 +65,7 @@ namespace slang { void Backend::CreateFunctionPasses() { if (!mPerFunctionPasses) { mPerFunctionPasses = new llvm::FunctionPassManager(mpModule); - mPerFunctionPasses->add(new llvm::DataLayout(mpModule)); + mPerFunctionPasses->add(new llvm::DataLayoutPass(mpModule)); llvm::PassManagerBuilder PMBuilder; PMBuilder.OptLevel = mCodeGenOpts.OptimizationLevel; @@ -77,7 +77,7 @@ void Backend::CreateFunctionPasses() { void Backend::CreateModulePasses() { if (!mPerModulePasses) { mPerModulePasses = new llvm::PassManager(); - mPerModulePasses->add(new llvm::DataLayout(mpModule)); + mPerModulePasses->add(new llvm::DataLayoutPass(mpModule)); llvm::PassManagerBuilder PMBuilder; PMBuilder.OptLevel = mCodeGenOpts.OptimizationLevel; @@ -111,7 +111,7 @@ bool Backend::CreateCodeGenPasses() { return true; } else { mCodeGenPasses = new llvm::FunctionPassManager(mpModule); - mCodeGenPasses->add(new llvm::DataLayout(mpModule)); + mCodeGenPasses->add(new llvm::DataLayoutPass(mpModule)); } // Create the TargetMachine for generating code. @@ -147,7 +147,7 @@ bool Backend::CreateCodeGenPasses() { // This is set for the linker (specify how large of the virtual addresses we // can access for all unknown symbols.) llvm::CodeModel::Model CM; - if (mpModule->getPointerSize() == llvm::Module::Pointer32) { + if (mpModule->getDataLayout()->getPointerSize() == 4) { CM = llvm::CodeModel::Small; } else { // The target may have pointer size greater than 32 (e.g. x86_64 @@ -343,7 +343,7 @@ void Backend::HandleTranslationUnit(clang::ASTContext &Ctx) { } case Slang::OT_LLVMAssembly: { llvm::PassManager *LLEmitPM = new llvm::PassManager(); - LLEmitPM->add(llvm::createPrintModulePass(&FormattedOutStream)); + LLEmitPM->add(llvm::createPrintModulePass(FormattedOutStream)); LLEmitPM->run(*mpModule); break; } diff --git a/slang_diagnostic_buffer.h b/slang_diagnostic_buffer.h index e065927..66a0c9c 100644 --- a/slang_diagnostic_buffer.h +++ b/slang_diagnostic_buffer.h @@ -21,6 +21,7 @@ #include "clang/Basic/Diagnostic.h" +#include "llvm/ADT/OwningPtr.h" #include "llvm/Support/raw_ostream.h" namespace llvm { diff --git a/slang_rs.cpp b/slang_rs.cpp index 00f0c00..47324bf 100644 --- a/slang_rs.cpp +++ b/slang_rs.cpp @@ -247,7 +247,7 @@ clang::ASTConsumer bool SlangRS::IsRSHeaderFile(const char *File) { #define RS_HEADER_ENTRY(name) \ - if (::strcmp(File, #name "."RS_HEADER_SUFFIX) == 0) \ + if (::strcmp(File, #name "." RS_HEADER_SUFFIX) == 0) \ return true; ENUM_RS_HEADER() #undef RS_HEADER_ENTRY diff --git a/slang_rs_backend.cpp b/slang_rs_backend.cpp index cf51612..cda0c24 100644 --- a/slang_rs_backend.cpp +++ b/slang_rs_backend.cpp @@ -33,7 +33,7 @@ #include "llvm/IR/Metadata.h" #include "llvm/IR/Module.h" -#include "llvm/Support/DebugLoc.h" +#include "llvm/IR/DebugLoc.h" #include "slang_assert.h" #include "slang_rs.h" diff --git a/slang_rs_check_ast.cpp b/slang_rs_check_ast.cpp index 15859e3..b5cb024 100644 --- a/slang_rs_check_ast.cpp +++ b/slang_rs_check_ast.cpp @@ -152,7 +152,7 @@ void RSCheckAST::ValidateFunctionDecl(clang::FunctionDecl *FD) { // Validate parameters for Filterscript. size_t numParams = FD->getNumParams(); - clang::QualType resultType = FD->getResultType().getCanonicalType(); + clang::QualType resultType = FD->getReturnType().getCanonicalType(); // We use FD as our NamedDecl in the case of a bad return type. if (!RSExportType::ValidateType(Context, C, resultType, FD, diff --git a/slang_rs_context.cpp b/slang_rs_context.cpp index c1c27f4..b7ee0dc 100644 --- a/slang_rs_context.cpp +++ b/slang_rs_context.cpp @@ -316,19 +316,4 @@ RSContext::~RSContext() { } } -clang::DiagnosticBuilder RSContext::Report( - clang::DiagnosticsEngine::Level Level, const char *Message) { - clang::DiagnosticsEngine *DiagEngine = getDiagnostics(); - return DiagEngine->Report(DiagEngine->getCustomDiagID(Level, Message)); -} - -clang::DiagnosticBuilder RSContext::Report( - clang::DiagnosticsEngine::Level Level, const clang::SourceLocation Loc, - const char *Message) { - clang::DiagnosticsEngine *DiagEngine = getDiagnostics(); - const clang::SourceManager *SM = getSourceManager(); - return DiagEngine->Report(clang::FullSourceLoc(Loc, *SM), - DiagEngine->getCustomDiagID(Level, Message)); -} - } // namespace slang diff --git a/slang_rs_context.h b/slang_rs_context.h index 4a9261e..c3a177c 100644 --- a/slang_rs_context.h +++ b/slang_rs_context.h @@ -235,27 +235,45 @@ class RSContext { } // Report an error or a warning to the user. + template <unsigned N> clang::DiagnosticBuilder Report(clang::DiagnosticsEngine::Level Level, - const char *Message); + const char (&Message)[N]) { + clang::DiagnosticsEngine *DiagEngine = getDiagnostics(); + return DiagEngine->Report(DiagEngine->getCustomDiagID(Level, Message)); +} + + template <unsigned N> clang::DiagnosticBuilder Report(clang::DiagnosticsEngine::Level Level, - const clang::SourceLocation Loc, - const char *Message); + const clang::SourceLocation Loc, + const char (&Message)[N]) { + clang::DiagnosticsEngine *DiagEngine = getDiagnostics(); + const clang::SourceManager *SM = getSourceManager(); + return DiagEngine->Report(clang::FullSourceLoc(Loc, *SM), + DiagEngine->getCustomDiagID(Level, Message)); +} // Utility functions to report errors and warnings to make the calling code // easier to read. - clang::DiagnosticBuilder ReportError(const char *Message) { - return Report(clang::DiagnosticsEngine::Error, Message); + template <unsigned N> + clang::DiagnosticBuilder ReportError(const char (&Message)[N]) { + return Report<N>(clang::DiagnosticsEngine::Error, Message); } + + template <unsigned N> clang::DiagnosticBuilder ReportError(const clang::SourceLocation Loc, - const char *Message) { - return Report(clang::DiagnosticsEngine::Error, Loc, Message); + const char (&Message)[N]) { + return Report<N>(clang::DiagnosticsEngine::Error, Loc, Message); } - clang::DiagnosticBuilder ReportWarning(const char *Message) { - return Report(clang::DiagnosticsEngine::Warning, Message); + + template <unsigned N> + clang::DiagnosticBuilder ReportWarning(const char (&Message)[N]) { + return Report<N>(clang::DiagnosticsEngine::Warning, Message); } + + template <unsigned N> clang::DiagnosticBuilder ReportWarning(const clang::SourceLocation Loc, - const char *Message) { - return Report(clang::DiagnosticsEngine::Warning, Loc, Message); + const char (&Message)[N]) { + return Report<N>(clang::DiagnosticsEngine::Warning, Loc, Message); } ~RSContext(); diff --git a/slang_rs_export_foreach.cpp b/slang_rs_export_foreach.cpp index 51e916a..5a15633 100644 --- a/slang_rs_export_foreach.cpp +++ b/slang_rs_export_foreach.cpp @@ -53,7 +53,7 @@ bool RSExportForEach::validateAndConstructParams( } } - mResultType = FD->getResultType().getCanonicalType(); + mResultType = FD->getReturnType().getCanonicalType(); // Compute kernel functions are defined differently when the // "__attribute__((kernel))" is set. if (FD->hasAttr<clang::KernelAttr>()) { @@ -446,7 +446,7 @@ bool RSExportForEach::isGraphicsRootRSFunc(int targetAPI, // Check for legacy graphics root function (with single parameter). if ((targetAPI < SLANG_ICS_TARGET_API) && (FD->getNumParams() == 1)) { const clang::QualType &IntType = FD->getASTContext().IntTy; - if (FD->getResultType().getCanonicalType() == IntType) { + if (FD->getReturnType().getCanonicalType() == IntType) { return true; } } @@ -527,7 +527,7 @@ RSExportForEach::validateSpecialFuncDecl(int targetAPI, } // Graphics root function, so verify that it returns an int - if (FD->getResultType().getCanonicalType() != IntType) { + if (FD->getReturnType().getCanonicalType() != IntType) { Context->ReportError(FD->getLocation(), "root() is required to return " "an int for graphics usage"); @@ -542,7 +542,7 @@ RSExportForEach::validateSpecialFuncDecl(int targetAPI, valid = false; } - if (FD->getResultType().getCanonicalType() != C.VoidTy) { + if (FD->getReturnType().getCanonicalType() != C.VoidTy) { Context->ReportError(FD->getLocation(), "%0(void) is required to have a void " "return type") diff --git a/slang_rs_export_func.cpp b/slang_rs_export_func.cpp index 9a7afa3..52dfc51 100644 --- a/slang_rs_export_func.cpp +++ b/slang_rs_export_func.cpp @@ -36,7 +36,7 @@ static bool ValidateFuncDecl(slang::RSContext *Context, const clang::FunctionDecl *FD) { slangAssert(Context && FD); const clang::ASTContext &C = FD->getASTContext(); - if (FD->getResultType().getCanonicalType() != C.VoidTy) { + if (FD->getReturnType().getCanonicalType() != C.VoidTy) { Context->ReportError( FD->getLocation(), "invokable non-static functions are required to return void"); diff --git a/slang_rs_export_type.cpp b/slang_rs_export_type.cpp index ff96523..3f302ac 100644 --- a/slang_rs_export_type.cpp +++ b/slang_rs_export_type.cpp @@ -86,10 +86,11 @@ static const clang::Type *TypeExportableHelper( const clang::VarDecl *VD, const clang::RecordDecl *TopLevelRecord); +template <unsigned N> static void ReportTypeError(slang::RSContext *Context, const clang::NamedDecl *ND, const clang::RecordDecl *TopLevelRecord, - const char *Message, + const char (&Message)[N], unsigned int TargetAPI = 0) { // Attempt to use the type declaration first (if we have one). // Fall back to the variable definition, if we are looking at something diff --git a/slang_rs_export_type.h b/slang_rs_export_type.h index 4fdbe85..80bb317 100644 --- a/slang_rs_export_type.h +++ b/slang_rs_export_type.h @@ -49,7 +49,7 @@ #define DUMMY_RS_TYPE_NAME_PREFIX "<" #define DUMMY_RS_TYPE_NAME_POSTFIX ">" #define DUMMY_TYPE_NAME_FOR_RS_CONSTANT_ARRAY_TYPE \ - DUMMY_RS_TYPE_NAME_PREFIX"ConstantArray"DUMMY_RS_TYPE_NAME_POSTFIX + DUMMY_RS_TYPE_NAME_PREFIX "ConstantArray" DUMMY_RS_TYPE_NAME_POSTFIX union RSType; diff --git a/slang_rs_reflection.cpp b/slang_rs_reflection.cpp index 65b6b43..e1d4151 100644 --- a/slang_rs_reflection.cpp +++ b/slang_rs_reflection.cpp @@ -195,7 +195,7 @@ static std::string GetTypeName(const RSExportType *ET, bool Brackets = true) { return ElementTypeName; } case RSExportType::ExportClassRecord: { - return ET->getElementName() + "."RS_TYPE_ITEM_CLASS_NAME; + return ET->getElementName() + "." RS_TYPE_ITEM_CLASS_NAME; } default: { slangAssert(false && "Unknown class of type"); @@ -530,7 +530,7 @@ void RSReflection::genInitExportVariable(Context &C, C.indent() << RS_EXPORT_VAR_PREFIX << VarName << " = new " << ERT->getElementName() - << "."RS_TYPE_ITEM_CLASS_NAME"();" << std::endl; + << "." RS_TYPE_ITEM_CLASS_NAME"();" << std::endl; for (RSExportRecordType::const_field_iterator I = ERT->fields_begin(), E = ERT->fields_end(); @@ -561,7 +561,7 @@ void RSReflection::genInitExportVariable(Context &C, void RSReflection::genExportVariable(Context &C, const RSExportVar *EV) { const RSExportType *ET = EV->getType(); - C.indent() << "private final static int "RS_EXPORT_VAR_INDEX_PREFIX + C.indent() << "private final static int " RS_EXPORT_VAR_INDEX_PREFIX << EV->getName() << " = " << C.getNextExportVarSlot() << ";" << std::endl; @@ -599,7 +599,7 @@ void RSReflection::genExportVariable(Context &C, const RSExportVar *EV) { } void RSReflection::genExportFunction(Context &C, const RSExportFunc *EF) { - C.indent() << "private final static int "RS_EXPORT_FUNC_INDEX_PREFIX + C.indent() << "private final static int " RS_EXPORT_FUNC_INDEX_PREFIX << EF->getName() << " = " << C.getNextExportFuncSlot() << ";" << std::endl; @@ -625,7 +625,7 @@ void RSReflection::genExportFunction(Context &C, const RSExportFunc *EF) { Args); if (!EF->hasParam()) { - C.indent() << "invoke("RS_EXPORT_FUNC_INDEX_PREFIX << EF->getName() << ");" + C.indent() << "invoke(" RS_EXPORT_FUNC_INDEX_PREFIX << EF->getName() << ");" << std::endl; } else { const RSExportRecordType *ERT = EF->getParamPacketType(); @@ -634,7 +634,7 @@ void RSReflection::genExportFunction(Context &C, const RSExportFunc *EF) { if (genCreateFieldPacker(C, ERT, FieldPackerName.c_str())) genPackVarOfType(C, ERT, NULL, FieldPackerName.c_str()); - C.indent() << "invoke("RS_EXPORT_FUNC_INDEX_PREFIX << EF->getName() << ", " + C.indent() << "invoke(" RS_EXPORT_FUNC_INDEX_PREFIX << EF->getName() << ", " << FieldPackerName << ");" << std::endl; } @@ -646,13 +646,13 @@ void RSReflection::genExportForEach(Context &C, const RSExportForEach *EF) { if (EF->isDummyRoot()) { // Skip reflection for dummy root() kernels. Note that we have to // advance the next slot number for ForEach, however. - C.indent() << "//private final static int "RS_EXPORT_FOREACH_INDEX_PREFIX + C.indent() << "//private final static int " RS_EXPORT_FOREACH_INDEX_PREFIX << EF->getName() << " = " << C.getNextExportForEachSlot() << ";" << std::endl; return; } - C.indent() << "private final static int "RS_EXPORT_FOREACH_INDEX_PREFIX + C.indent() << "private final static int " RS_EXPORT_FOREACH_INDEX_PREFIX << EF->getName() << " = " << C.getNextExportForEachSlot() << ";" << std::endl; @@ -767,7 +767,7 @@ void RSReflection::genExportForEach(Context &C, const RSExportForEach *EF) { genPackVarOfType(C, ERT, NULL, FieldPackerName.c_str()); } } - C.indent() << "forEach("RS_EXPORT_FOREACH_INDEX_PREFIX << EF->getName(); + C.indent() << "forEach(" RS_EXPORT_FOREACH_INDEX_PREFIX << EF->getName(); if (EF->hasIn()) C.out() << ", ain"; @@ -941,10 +941,10 @@ void RSReflection::genPrimitiveTypeExportVariable( C.indent() << "}" << std::endl; genPackVarOfType(C, EPT, "v", FPName.c_str()); - C.indent() << "setVar("RS_EXPORT_VAR_INDEX_PREFIX << VarName + C.indent() << "setVar(" RS_EXPORT_VAR_INDEX_PREFIX << VarName << ", " << FPName << ");" << std::endl; } else { - C.indent() << "setVar("RS_EXPORT_VAR_INDEX_PREFIX << VarName + C.indent() << "setVar(" RS_EXPORT_VAR_INDEX_PREFIX << VarName << ", v);" << std::endl; } @@ -983,7 +983,7 @@ void RSReflection::genPointerTypeExportVariable(Context &C, TypeName.c_str(), "v"); C.indent() << RS_EXPORT_VAR_PREFIX << VarName << " = v;" << std::endl; - C.indent() << "if (v == null) bindAllocation(null, "RS_EXPORT_VAR_INDEX_PREFIX + C.indent() << "if (v == null) bindAllocation(null, " RS_EXPORT_VAR_INDEX_PREFIX << VarName << ");" << std::endl; if (PointeeType->getClass() == RSExportType::ExportClassRecord) @@ -991,7 +991,7 @@ void RSReflection::genPointerTypeExportVariable(Context &C, RS_EXPORT_VAR_INDEX_PREFIX << VarName << ");" << std::endl; else - C.indent() << "else bindAllocation(v, "RS_EXPORT_VAR_INDEX_PREFIX + C.indent() << "else bindAllocation(v, " RS_EXPORT_VAR_INDEX_PREFIX << VarName << ");" << std::endl; C.endFunction(); @@ -1039,7 +1039,7 @@ void RSReflection::genMatrixTypeExportVariable(Context &C, if (genCreateFieldPacker(C, ET, FieldPackerName)) genPackVarOfType(C, ET, "v", FieldPackerName); - C.indent() << "setVar("RS_EXPORT_VAR_INDEX_PREFIX << VarName << ", " + C.indent() << "setVar(" RS_EXPORT_VAR_INDEX_PREFIX << VarName << ", " << FieldPackerName << ");" << std::endl; C.endFunction(); @@ -1085,7 +1085,7 @@ void RSReflection::genRecordTypeExportVariable(Context &C, void RSReflection::genPrivateExportVariable(Context &C, const std::string &TypeName, const std::string &VarName) { - C.indent() << "private " << TypeName << " "RS_EXPORT_VAR_PREFIX + C.indent() << "private " << TypeName << " " RS_EXPORT_VAR_PREFIX << VarName << ";" << std::endl; return; } @@ -1110,14 +1110,14 @@ void RSReflection::genSetExportVariable(Context &C, if (mRSContext->getTargetAPI() < SLANG_JB_TARGET_API) { // Legacy apps must use the old setVar() without Element/dim components. - C.indent() << "setVar("RS_EXPORT_VAR_INDEX_PREFIX << VarName + C.indent() << "setVar(" RS_EXPORT_VAR_INDEX_PREFIX << VarName << ", " << FieldPackerName << ");" << std::endl; } else { // We only have support for one-dimensional array reflection today, // but the entry point (i.e. setVar()) takes an array of dimensions. C.indent() << "int []__dimArr = new int[1];" << std::endl; C.indent() << "__dimArr[0] = " << ET->getSize() << ";" << std::endl; - C.indent() << "setVar("RS_EXPORT_VAR_INDEX_PREFIX << VarName << ", " + C.indent() << "setVar(" RS_EXPORT_VAR_INDEX_PREFIX << VarName << ", " << FieldPackerName << ", " RS_ELEM_PREFIX << ET->getElementName() << ", __dimArr);" << std::endl; } @@ -1136,7 +1136,7 @@ void RSReflection::genGetExportVariable(Context &C, "get_" + VarName, 0); - C.indent() << "return "RS_EXPORT_VAR_PREFIX << VarName << ";" << std::endl; + C.indent() << "return " RS_EXPORT_VAR_PREFIX << VarName << ";" << std::endl; C.endFunction(); } @@ -1346,9 +1346,9 @@ void RSReflection::genNewItemBufferIfNull(Context &C, "[getType().getX() /* count */];" << std::endl; if (Index != NULL) - C.indent() << "if ("RS_TYPE_ITEM_BUFFER_NAME"[" << Index << "] == null) " + C.indent() << "if (" RS_TYPE_ITEM_BUFFER_NAME "[" << Index << "] == null) " RS_TYPE_ITEM_BUFFER_NAME"[" << Index << "] = " - "new "RS_TYPE_ITEM_CLASS_NAME"();" << std::endl; + "new " RS_TYPE_ITEM_CLASS_NAME "();" << std::endl; return; } @@ -1381,9 +1381,9 @@ bool RSReflection::genTypeClass(Context &C, genTypeItemClass(C, ERT); // Declare item buffer and item buffer packer - C.indent() << "private "RS_TYPE_ITEM_CLASS_NAME" "RS_TYPE_ITEM_BUFFER_NAME"[]" + C.indent() << "private " RS_TYPE_ITEM_CLASS_NAME " " RS_TYPE_ITEM_BUFFER_NAME "[]" ";" << std::endl; - C.indent() << "private FieldPacker "RS_TYPE_ITEM_BUFFER_PACKER_NAME";" + C.indent() << "private FieldPacker " RS_TYPE_ITEM_BUFFER_PACKER_NAME";" << std::endl; C.indent() << "private static java.lang.ref.WeakReference<Element> " RS_TYPE_ELEMENT_REF_NAME @@ -1412,7 +1412,7 @@ bool RSReflection::genTypeClass(Context &C, void RSReflection::genTypeItemClass(Context &C, const RSExportRecordType *ERT) { - C.indent() << "static public class "RS_TYPE_ITEM_CLASS_NAME; + C.indent() << "static public class " RS_TYPE_ITEM_CLASS_NAME; C.startBlock(); C.indent() << "public static final int sizeof = " @@ -1430,7 +1430,7 @@ void RSReflection::genTypeItemClass(Context &C, // Constructor C.out() << std::endl; - C.indent() << RS_TYPE_ITEM_CLASS_NAME"()"; + C.indent() << RS_TYPE_ITEM_CLASS_NAME "()"; C.startBlock(); for (RSExportRecordType::const_field_iterator FI = ERT->fields_begin(), @@ -1482,8 +1482,8 @@ void RSReflection::genTypeClassConstructor(Context &C, C.getClassName(), 1, "RenderScript", RenderScriptVar); - C.indent() << RS_TYPE_ITEM_BUFFER_NAME" = null;" << std::endl; - C.indent() << RS_TYPE_ITEM_BUFFER_PACKER_NAME" = null;" << std::endl; + C.indent() << RS_TYPE_ITEM_BUFFER_NAME " = null;" << std::endl; + C.indent() << RS_TYPE_ITEM_BUFFER_PACKER_NAME " = null;" << std::endl; C.indent() << "mElement = createElement(" << RenderScriptVar << ");" << std::endl; C.endFunction(); @@ -1497,8 +1497,8 @@ void RSReflection::genTypeClassConstructor(Context &C, "RenderScript", RenderScriptVar, "int", "count"); - C.indent() << RS_TYPE_ITEM_BUFFER_NAME" = null;" << std::endl; - C.indent() << RS_TYPE_ITEM_BUFFER_PACKER_NAME" = null;" << std::endl; + C.indent() << RS_TYPE_ITEM_BUFFER_NAME " = null;" << std::endl; + C.indent() << RS_TYPE_ITEM_BUFFER_PACKER_NAME " = null;" << std::endl; C.indent() << "mElement = createElement(" << RenderScriptVar << ");" << std::endl; // Call init() in super class @@ -1515,8 +1515,8 @@ void RSReflection::genTypeClassConstructor(Context &C, "int", "count", "int", "usages"); - C.indent() << RS_TYPE_ITEM_BUFFER_NAME" = null;" << std::endl; - C.indent() << RS_TYPE_ITEM_BUFFER_PACKER_NAME" = null;" << std::endl; + C.indent() << RS_TYPE_ITEM_BUFFER_NAME " = null;" << std::endl; + C.indent() << RS_TYPE_ITEM_BUFFER_PACKER_NAME " = null;" << std::endl; C.indent() << "mElement = createElement(" << RenderScriptVar << ");" << std::endl; // Call init() in super class @@ -1638,7 +1638,7 @@ void RSReflection::genTypeClassCopyToArray(Context &C, genNewItemBufferPackerIfNull(C); C.indent() << RS_TYPE_ITEM_BUFFER_PACKER_NAME - ".reset(index * "RS_TYPE_ITEM_CLASS_NAME".sizeof);" + ".reset(index * " RS_TYPE_ITEM_CLASS_NAME ".sizeof);" << std::endl; C.indent() << "copyToArrayLocal(i, " RS_TYPE_ITEM_BUFFER_PACKER_NAME @@ -1675,7 +1675,7 @@ void RSReflection::genTypeClassItemSetter(Context &C, "int", "index", "boolean", "copyNow"); genNewItemBufferIfNull(C, NULL); - C.indent() << RS_TYPE_ITEM_BUFFER_NAME"[index] = i;" << std::endl; + C.indent() << RS_TYPE_ITEM_BUFFER_NAME "[index] = i;" << std::endl; C.indent() << "if (copyNow) "; C.startBlock(); @@ -1701,9 +1701,9 @@ void RSReflection::genTypeClassItemGetter(Context &C, "get", 1, "int", "index"); - C.indent() << "if ("RS_TYPE_ITEM_BUFFER_NAME" == null) return null;" + C.indent() << "if (" RS_TYPE_ITEM_BUFFER_NAME " == null) return null;" << std::endl; - C.indent() << "return "RS_TYPE_ITEM_BUFFER_NAME"[index];" << std::endl; + C.indent() << "return " RS_TYPE_ITEM_BUFFER_NAME "[index];" << std::endl; C.endFunction(); return; } @@ -1728,7 +1728,7 @@ void RSReflection::genTypeClassComponentSetter(Context &C, "boolean", "copyNow"); genNewItemBufferPackerIfNull(C); genNewItemBufferIfNull(C, "index"); - C.indent() << RS_TYPE_ITEM_BUFFER_NAME"[index]." << F->getName() + C.indent() << RS_TYPE_ITEM_BUFFER_NAME "[index]." << F->getName() << " = v;" << std::endl; C.indent() << "if (copyNow) "; @@ -1736,11 +1736,11 @@ void RSReflection::genTypeClassComponentSetter(Context &C, if (FieldOffset > 0) C.indent() << RS_TYPE_ITEM_BUFFER_PACKER_NAME - ".reset(index * "RS_TYPE_ITEM_CLASS_NAME".sizeof + " + ".reset(index * " RS_TYPE_ITEM_CLASS_NAME ".sizeof + " << FieldOffset << ");" << std::endl; else C.indent() << RS_TYPE_ITEM_BUFFER_PACKER_NAME - ".reset(index * "RS_TYPE_ITEM_CLASS_NAME".sizeof);" + ".reset(index * " RS_TYPE_ITEM_CLASS_NAME ".sizeof);" << std::endl; genPackVarOfType(C, F->getType(), "v", RS_TYPE_ITEM_BUFFER_PACKER_NAME); @@ -1772,9 +1772,9 @@ void RSReflection::genTypeClassComponentGetter(Context &C, "get_" + F->getName(), 1, "int", "index"); - C.indent() << "if ("RS_TYPE_ITEM_BUFFER_NAME" == null) return " + C.indent() << "if (" RS_TYPE_ITEM_BUFFER_NAME " == null) return " << GetTypeNullValue(F->getType()) << ";" << std::endl; - C.indent() << "return "RS_TYPE_ITEM_BUFFER_NAME"[index]." << F->getName() + C.indent() << "return " RS_TYPE_ITEM_BUFFER_NAME "[index]." << F->getName() << ";" << std::endl; C.endFunction(); } @@ -1785,11 +1785,11 @@ void RSReflection::genTypeClassCopyAll(Context &C, const RSExportRecordType *ERT) { C.startFunction(Context::AM_PublicSynchronized, false, "void", "copyAll", 0); - C.indent() << "for (int ct = 0; ct < "RS_TYPE_ITEM_BUFFER_NAME".length; ct++)" - " copyToArray("RS_TYPE_ITEM_BUFFER_NAME"[ct], ct);" + C.indent() << "for (int ct = 0; ct < " RS_TYPE_ITEM_BUFFER_NAME ".length; ct++)" + " copyToArray(" RS_TYPE_ITEM_BUFFER_NAME "[ct], ct);" << std::endl; C.indent() << "mAllocation.setFromFieldPacker(0, " - RS_TYPE_ITEM_BUFFER_PACKER_NAME");" + RS_TYPE_ITEM_BUFFER_PACKER_NAME ");" << std::endl; C.endFunction(); |