aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.mk2
-rw-r--r--BitWriter_2_9/BitcodeWriter.cpp8
-rw-r--r--BitWriter_2_9_func/BitcodeWriter.cpp10
-rw-r--r--BitWriter_3_2/BitcodeWriter.cpp14
-rw-r--r--llvm-rs-as.cpp10
-rw-r--r--slang.cpp12
-rw-r--r--slang_backend.cpp12
-rw-r--r--slang_diagnostic_buffer.h1
-rw-r--r--slang_rs.cpp2
-rw-r--r--slang_rs_backend.cpp2
-rw-r--r--slang_rs_check_ast.cpp2
-rw-r--r--slang_rs_context.cpp15
-rw-r--r--slang_rs_context.h40
-rw-r--r--slang_rs_export_foreach.cpp8
-rw-r--r--slang_rs_export_func.cpp2
-rw-r--r--slang_rs_export_type.cpp3
-rw-r--r--slang_rs_export_type.h2
-rw-r--r--slang_rs_reflection.cpp84
18 files changed, 112 insertions, 117 deletions
diff --git a/Android.mk b/Android.mk
index 7e737a1..226c539 100644
--- a/Android.mk
+++ b/Android.mk
@@ -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;
diff --git a/slang.cpp b/slang.cpp
index bff6864..2edb84b 100644
--- a/slang.cpp
+++ b/slang.cpp
@@ -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();