Merge "Fix slang to compile with LLVM r275480"
am: 1689f351bf
Change-Id: I69f07fd5196534fcb7efc9a378557c0a4f546573
diff --git a/BitWriter_2_9/BitcodeWriter.cpp b/BitWriter_2_9/BitcodeWriter.cpp
index 5a905f8..caee7de 100644
--- a/BitWriter_2_9/BitcodeWriter.cpp
+++ b/BitWriter_2_9/BitcodeWriter.cpp
@@ -479,10 +479,10 @@
Vals.push_back(GV.hasSection() ? SectionMap[GV.getSection()] : 0);
if (GV.isThreadLocal() ||
GV.getVisibility() != GlobalValue::DefaultVisibility ||
- GV.hasUnnamedAddr()) {
+ GV.getUnnamedAddr() != GlobalValue::UnnamedAddr::None) {
Vals.push_back(getEncodedVisibility(GV));
Vals.push_back(GV.isThreadLocal());
- Vals.push_back(GV.hasUnnamedAddr());
+ Vals.push_back(GV.getUnnamedAddr() != GlobalValue::UnnamedAddr::None);
} else {
AbbrevToUse = SimpleGVarAbbrev;
}
@@ -504,7 +504,7 @@
Vals.push_back(F.hasSection() ? SectionMap[F.getSection()] : 0);
Vals.push_back(getEncodedVisibility(F));
Vals.push_back(F.hasGC() ? GCMap[F.getGC()] : 0);
- Vals.push_back(F.hasUnnamedAddr());
+ Vals.push_back(F.getUnnamedAddr() != GlobalValue::UnnamedAddr::None);
unsigned AbbrevToUse = 0;
Stream.EmitRecord(bitc::MODULE_CODE_FUNCTION, Vals, AbbrevToUse);
@@ -609,7 +609,7 @@
if (VE.hasMDString()) {
// Abbrev for METADATA_STRING.
BitCodeAbbrev *Abbv = new BitCodeAbbrev();
- Abbv->Add(BitCodeAbbrevOp(bitc::METADATA_STRING));
+ Abbv->Add(BitCodeAbbrevOp(bitc::METADATA_STRING_OLD));
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Array));
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 8));
MDSAbbrev = Stream.EmitAbbrev(Abbv);
@@ -667,7 +667,7 @@
Record.append(MDS->bytes_begin(), MDS->bytes_end());
// Emit the finished record.
- Stream.EmitRecord(bitc::METADATA_STRING, Record, MDSAbbrev);
+ Stream.EmitRecord(bitc::METADATA_STRING_OLD, Record, MDSAbbrev);
Record.clear();
}
diff --git a/BitWriter_2_9_func/BitcodeWriter.cpp b/BitWriter_2_9_func/BitcodeWriter.cpp
index 4ef7ac2..3ed3380 100644
--- a/BitWriter_2_9_func/BitcodeWriter.cpp
+++ b/BitWriter_2_9_func/BitcodeWriter.cpp
@@ -122,13 +122,13 @@
static unsigned GetEncodedOrdering(AtomicOrdering Ordering) {
switch (Ordering) {
default: llvm_unreachable("Unknown atomic ordering");
- case NotAtomic: return bitc::ORDERING_NOTATOMIC;
- case Unordered: return bitc::ORDERING_UNORDERED;
- case Monotonic: return bitc::ORDERING_MONOTONIC;
- case Acquire: return bitc::ORDERING_ACQUIRE;
- case Release: return bitc::ORDERING_RELEASE;
- case AcquireRelease: return bitc::ORDERING_ACQREL;
- case SequentiallyConsistent: return bitc::ORDERING_SEQCST;
+ case AtomicOrdering::NotAtomic: return bitc::ORDERING_NOTATOMIC;
+ case AtomicOrdering::Unordered: return bitc::ORDERING_UNORDERED;
+ case AtomicOrdering::Monotonic: return bitc::ORDERING_MONOTONIC;
+ case AtomicOrdering::Acquire: return bitc::ORDERING_ACQUIRE;
+ case AtomicOrdering::Release: return bitc::ORDERING_RELEASE;
+ case AtomicOrdering::AcquireRelease: return bitc::ORDERING_ACQREL;
+ case AtomicOrdering::SequentiallyConsistent: return bitc::ORDERING_SEQCST;
}
}
@@ -477,10 +477,10 @@
Vals.push_back(GV.hasSection() ? SectionMap[GV.getSection()] : 0);
if (GV.isThreadLocal() ||
GV.getVisibility() != GlobalValue::DefaultVisibility ||
- GV.hasUnnamedAddr()) {
+ GV.getUnnamedAddr() != GlobalValue::UnnamedAddr::None) {
Vals.push_back(getEncodedVisibility(GV));
Vals.push_back(GV.isThreadLocal());
- Vals.push_back(GV.hasUnnamedAddr());
+ Vals.push_back(GV.getUnnamedAddr() != GlobalValue::UnnamedAddr::None);
} else {
AbbrevToUse = SimpleGVarAbbrev;
}
@@ -502,7 +502,7 @@
Vals.push_back(F.hasSection() ? SectionMap[F.getSection()] : 0);
Vals.push_back(getEncodedVisibility(F));
Vals.push_back(F.hasGC() ? GCMap[F.getGC()] : 0);
- Vals.push_back(F.hasUnnamedAddr());
+ Vals.push_back(F.getUnnamedAddr() != GlobalValue::UnnamedAddr::None);
unsigned AbbrevToUse = 0;
Stream.EmitRecord(bitc::MODULE_CODE_FUNCTION, Vals, AbbrevToUse);
@@ -607,7 +607,7 @@
if (VE.hasMDString()) {
// Abbrev for METADATA_STRING.
BitCodeAbbrev *Abbv = new BitCodeAbbrev();
- Abbv->Add(BitCodeAbbrevOp(bitc::METADATA_STRING));
+ Abbv->Add(BitCodeAbbrevOp(bitc::METADATA_STRING_OLD));
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Array));
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 8));
MDSAbbrev = Stream.EmitAbbrev(Abbv);
@@ -665,7 +665,7 @@
Record.append(MDS->bytes_begin(), MDS->bytes_end());
// Emit the finished record.
- Stream.EmitRecord(bitc::METADATA_STRING, Record, MDSAbbrev);
+ Stream.EmitRecord(bitc::METADATA_STRING_OLD, Record, MDSAbbrev);
Record.clear();
}
diff --git a/BitWriter_3_2/BitcodeWriter.cpp b/BitWriter_3_2/BitcodeWriter.cpp
index 7618198..c57dd45 100644
--- a/BitWriter_3_2/BitcodeWriter.cpp
+++ b/BitWriter_3_2/BitcodeWriter.cpp
@@ -121,13 +121,13 @@
static unsigned GetEncodedOrdering(AtomicOrdering Ordering) {
switch (Ordering) {
- case NotAtomic: return bitc::ORDERING_NOTATOMIC;
- case Unordered: return bitc::ORDERING_UNORDERED;
- case Monotonic: return bitc::ORDERING_MONOTONIC;
- case Acquire: return bitc::ORDERING_ACQUIRE;
- case Release: return bitc::ORDERING_RELEASE;
- case AcquireRelease: return bitc::ORDERING_ACQREL;
- case SequentiallyConsistent: return bitc::ORDERING_SEQCST;
+ case AtomicOrdering::NotAtomic: return bitc::ORDERING_NOTATOMIC;
+ case AtomicOrdering::Unordered: return bitc::ORDERING_UNORDERED;
+ case AtomicOrdering::Monotonic: return bitc::ORDERING_MONOTONIC;
+ case AtomicOrdering::Acquire: return bitc::ORDERING_ACQUIRE;
+ case AtomicOrdering::Release: return bitc::ORDERING_RELEASE;
+ case AtomicOrdering::AcquireRelease: return bitc::ORDERING_ACQREL;
+ case AtomicOrdering::SequentiallyConsistent: return bitc::ORDERING_SEQCST;
}
llvm_unreachable("Invalid ordering");
}
@@ -490,10 +490,11 @@
Vals.push_back(GV.hasSection() ? SectionMap[GV.getSection()] : 0);
if (GV.isThreadLocal() ||
GV.getVisibility() != GlobalValue::DefaultVisibility ||
- GV.hasUnnamedAddr() || GV.isExternallyInitialized()) {
+ GV.getUnnamedAddr() != GlobalValue::UnnamedAddr::None ||
+ GV.isExternallyInitialized()) {
Vals.push_back(getEncodedVisibility(GV));
Vals.push_back(getEncodedThreadLocalMode(GV));
- Vals.push_back(GV.hasUnnamedAddr());
+ Vals.push_back(GV.getUnnamedAddr() != GlobalValue::UnnamedAddr::None);
Vals.push_back(GV.isExternallyInitialized());
} else {
AbbrevToUse = SimpleGVarAbbrev;
@@ -516,7 +517,7 @@
Vals.push_back(F.hasSection() ? SectionMap[F.getSection()] : 0);
Vals.push_back(getEncodedVisibility(F));
Vals.push_back(F.hasGC() ? GCMap[F.getGC()] : 0);
- Vals.push_back(F.hasUnnamedAddr());
+ Vals.push_back(F.getUnnamedAddr() != GlobalValue::UnnamedAddr::None);
unsigned AbbrevToUse = 0;
Stream.EmitRecord(bitc::MODULE_CODE_FUNCTION, Vals, AbbrevToUse);
@@ -636,7 +637,7 @@
if (VE.hasMDString()) {
// Abbrev for METADATA_STRING.
BitCodeAbbrev *Abbv = new BitCodeAbbrev();
- Abbv->Add(BitCodeAbbrevOp(bitc::METADATA_STRING));
+ Abbv->Add(BitCodeAbbrevOp(bitc::METADATA_STRING_OLD));
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Array));
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 8));
MDSAbbrev = Stream.EmitAbbrev(Abbv);
@@ -694,7 +695,7 @@
Record.append(MDS->bytes_begin(), MDS->bytes_end());
// Emit the finished record.
- Stream.EmitRecord(bitc::METADATA_STRING, Record, MDSAbbrev);
+ Stream.EmitRecord(bitc::METADATA_STRING_OLD, Record, MDSAbbrev);
Record.clear();
}
diff --git a/llvm-rs-as.cpp b/llvm-rs-as.cpp
index 5f3a901..95f19ee 100644
--- a/llvm-rs-as.cpp
+++ b/llvm-rs-as.cpp
@@ -103,9 +103,9 @@
int main(int argc, char **argv) {
// Print a stack trace if we signal out.
- sys::PrintStackTraceOnErrorSignal();
+ sys::PrintStackTraceOnErrorSignal(argv[0]);
PrettyStackTraceProgram X(argc, argv);
- LLVMContext &Context = getGlobalContext();
+ LLVMContext Context;
llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
cl::ParseCommandLineOptions(argc, argv, "llvm .ll -> .bc assembler\n");
diff --git a/llvm-rs-cc.cpp b/llvm-rs-cc.cpp
index 5da6315..2a2e486 100644
--- a/llvm-rs-cc.cpp
+++ b/llvm-rs-cc.cpp
@@ -33,6 +33,7 @@
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/StringSaver.h"
+#include "llvm/Support/TargetSelect.h"
#include "llvm/Target/TargetMachine.h"
#include "os_sep.h"
diff --git a/slang.cpp b/slang.cpp
index 516144d..aaac196 100644
--- a/slang.cpp
+++ b/slang.cpp
@@ -86,8 +86,8 @@
namespace {
-static const char *kRSTriple32 = "armv7-none-linux-gnueabi";
-static const char *kRSTriple64 = "aarch64-none-linux-gnueabi";
+static const char *kRSTriple32 = "renderscript32-none-linux-gnueabi";
+static const char *kRSTriple64 = "renderscript64-none-linux-gnueabi";
} // namespace
@@ -124,6 +124,10 @@
// bcc.cpp)
const llvm::StringRef Slang::PragmaMetadataName = "#pragma";
+static llvm::LLVMContext globalContext;
+
+llvm::LLVMContext &getGlobalLLVMContext() { return globalContext; }
+
static inline llvm::tool_output_file *
OpenOutputFile(const char *OutputFile,
llvm::sys::fs::OpenFlags Flags,
@@ -149,15 +153,10 @@
}
void Slang::createTarget(uint32_t BitWidth) {
- std::vector<std::string> features;
-
if (BitWidth == 64) {
mTargetOpts->Triple = kRSTriple64;
} else {
mTargetOpts->Triple = kRSTriple32;
- // Treat long as a 64-bit type for our 32-bit RS code.
- features.push_back("+long64");
- mTargetOpts->FeaturesAsWritten = features;
}
mTarget.reset(clang::TargetInfo::CreateTargetInfo(*mDiagEngine,
@@ -253,7 +252,7 @@
LangOpts.RTTI = 0; // Turn off the RTTI information support
LangOpts.LineComment = 1;
LangOpts.C99 = 1;
- LangOpts.Renderscript = 1;
+ LangOpts.RenderScript = 1;
LangOpts.LaxVectorConversions = 0; // Do not bitcast vectors!
LangOpts.CharIsSigned = 1; // Signed char is our default.
@@ -439,9 +438,9 @@
void Slang::setDebugMetadataEmission(bool EmitDebug) {
if (EmitDebug)
- CodeGenOpts.setDebugInfo(clang::CodeGenOptions::FullDebugInfo);
+ CodeGenOpts.setDebugInfo(clang::codegenoptions::FullDebugInfo);
else
- CodeGenOpts.setDebugInfo(clang::CodeGenOptions::NoDebugInfo);
+ CodeGenOpts.setDebugInfo(clang::codegenoptions::NoDebugInfo);
}
void Slang::setOptimizationLevel(llvm::CodeGenOpt::Level OptimizationLevel) {
diff --git a/slang.h b/slang.h
index faf6f8a..fcff79a 100644
--- a/slang.h
+++ b/slang.h
@@ -72,6 +72,8 @@
class RSContext;
class RSExportRecordType;
+llvm::LLVMContext &getGlobalLLVMContext();
+
class Slang : public clang::ModuleLoader {
public:
enum OutputType {
diff --git a/slang_backend.cpp b/slang_backend.cpp
index 81de4fd..b9999d5 100644
--- a/slang_backend.cpp
+++ b/slang_backend.cpp
@@ -95,11 +95,7 @@
llvm::PassManagerBuilder PMBuilder;
PMBuilder.OptLevel = mCodeGenOpts.OptimizationLevel;
PMBuilder.SizeLevel = mCodeGenOpts.OptimizeSize;
- if (mCodeGenOpts.UnitAtATime) {
- PMBuilder.DisableUnitAtATime = 0;
- } else {
- PMBuilder.DisableUnitAtATime = 1;
- }
+ PMBuilder.DisableUnitAtATime = 0; // TODO Pirama confirm if this is right
if (mCodeGenOpts.UnrollLoops) {
PMBuilder.DisableUnrollLoops = 0;
@@ -226,7 +222,7 @@
mRefCount(mContext->getASTContext()),
mASTChecker(Context, Context->getTargetAPI(), IsFilterscript),
mForEachHandler(Context),
- mLLVMContext(llvm::getGlobalContext()), mDiagEngine(*DiagEngine),
+ mLLVMContext(slang::getGlobalLLVMContext()), mDiagEngine(*DiagEngine),
mCodeGenOpts(CodeGenOpts), mPragmas(Pragmas) {
mGen = CreateLLVMCodeGen(mDiagEngine, "", HeaderSearchOpts, PreprocessorOpts,
mCodeGenOpts, mLLVMContext);
@@ -432,7 +428,7 @@
if (getTargetAPI() >= SLANG_FEATURE_SINGLE_SOURCE_API) {
if (FD && FD->hasBody() &&
!Slang::IsLocInRSHeaderFile(FD->getLocation(), mSourceMgr)) {
- if (FD->hasAttr<clang::KernelAttr>()) {
+ if (FD->hasAttr<clang::RenderScriptKernelAttr>()) {
// Log functions with attribute "kernel" by their names, and assign
// them slot numbers. Any other function cannot be used in a
// rsForEach() or rsForEachWithOptions() call, including old-style
@@ -537,7 +533,7 @@
static_cast<const RSExportPrimitiveType*>(ET);
ExportVarInfo.push_back(
llvm::MDString::get(
- mLLVMContext, llvm::utostr_32(PT->getType())));
+ mLLVMContext, llvm::utostr(PT->getType())));
if (PT->isRSObjectType()) {
countsAsRSObject = true;
}
@@ -553,7 +549,7 @@
case RSExportType::ExportClassMatrix: {
ExportVarInfo.push_back(
llvm::MDString::get(
- mLLVMContext, llvm::utostr_32(
+ mLLVMContext, llvm::utostr(
/* TODO Strange value. This pushes just a number, quite
* different than the other cases. What is this used for?
* These are the metadata values that some partner drivers
@@ -586,7 +582,7 @@
if (countsAsRSObject) {
mRSObjectSlotsMetadata->addOperand(llvm::MDNode::get(mLLVMContext,
- llvm::MDString::get(mLLVMContext, llvm::utostr_32(slotCount))));
+ llvm::MDString::get(mLLVMContext, llvm::utostr(slotCount))));
}
slotCount++;
@@ -763,7 +759,7 @@
ExportForEachInfo.push_back(
llvm::MDString::get(mLLVMContext,
- llvm::utostr_32(EFE->getSignatureMetadata())));
+ llvm::utostr(EFE->getSignatureMetadata())));
mExportForEachSignatureMetadata->addOperand(
llvm::MDNode::get(mLLVMContext, ExportForEachInfo));
@@ -804,14 +800,14 @@
addString(Idx++, (*I)->getNameReduce());
- addOperand(Idx++, llvm::MDString::get(mLLVMContext, llvm::utostr_32((*I)->getAccumulatorTypeSize())));
+ addOperand(Idx++, llvm::MDString::get(mLLVMContext, llvm::utostr((*I)->getAccumulatorTypeSize())));
llvm::SmallVector<llvm::Metadata *, 2> Accumulator;
Accumulator.push_back(
llvm::MDString::get(mLLVMContext, (*I)->getNameAccumulator()));
Accumulator.push_back(llvm::MDString::get(
mLLVMContext,
- llvm::utostr_32((*I)->getAccumulatorSignatureMetadata())));
+ llvm::utostr((*I)->getAccumulatorSignatureMetadata())));
addOperand(Idx++, llvm::MDTuple::get(mLLVMContext, Accumulator));
addString(Idx++, (*I)->getNameInitializer(), false);
diff --git a/slang_rs_check_ast.cpp b/slang_rs_check_ast.cpp
index 52626bc..e417b62 100644
--- a/slang_rs_check_ast.cpp
+++ b/slang_rs_check_ast.cpp
@@ -151,29 +151,14 @@
return;
}
- if (FD->hasAttr<clang::KernelAttr>()) {
- // Validate that the kernel attribute is not used with static.
- if (FD->getStorageClass() == clang::SC_Static) {
- Context->ReportError(FD->getLocation(),
- "Invalid use of attribute kernel with "
- "static function declaration: %0")
- << FD->getName();
- mValid = false;
- }
-
- // We allow no arguments to the attribute, or an expected single
- // argument. If there is an expected single argument, we verify
- // that it is one of the recognized kernel kinds.
- llvm::StringRef KernelKind =
- FD->getAttr<clang::KernelAttr>()->getKernelKind();
-
- if (!KernelKind.empty()) {
- Context->ReportError(FD->getLocation(),
- "Unknown kernel attribute argument '%0' "
- "in declaration of function '%1'")
- << KernelKind << FD->getName();
- mValid = false;
- }
+ // Validate that the kernel attribute is not used with static.
+ if (FD->hasAttr<clang::RenderScriptKernelAttr>() &&
+ FD->getStorageClass() == clang::SC_Static) {
+ Context->ReportError(FD->getLocation(),
+ "Invalid use of attribute kernel with "
+ "static function declaration: %0")
+ << FD->getName();
+ mValid = false;
}
clang::QualType resultType = FD->getReturnType().getCanonicalType();
diff --git a/slang_rs_context.cpp b/slang_rs_context.cpp
index 0e3ee53..53da2ef 100644
--- a/slang_rs_context.cpp
+++ b/slang_rs_context.cpp
@@ -57,8 +57,8 @@
mPragmas(Pragmas),
mTargetAPI(TargetAPI),
mVerbose(Verbose),
- mDataLayout(nullptr),
- mLLVMContext(llvm::getGlobalContext()),
+ mDataLayout(Target.getDataLayout()),
+ mLLVMContext(slang::getGlobalLLVMContext()),
mLicenseNote(nullptr),
mRSPackageName("android.renderscript"),
version(0),
@@ -69,7 +69,7 @@
AddPragmaHandlers(PP, this);
// Prepare target data
- mDataLayout = new llvm::DataLayout(Target.getDataLayoutString());
+ // mDataLayout = Target.getDataLayout();
// Reserve slot 0 for the root kernel.
mExportForEach.push_back(nullptr);
@@ -134,7 +134,7 @@
}
// New-style kernels with attribute "kernel" should come first in the list
- if (FD->hasAttr<clang::KernelAttr>()) {
+ if (FD->hasAttr<clang::RenderScriptKernelAttr>()) {
mFirstOldStyleKernel = mExportForEach.insert(mFirstOldStyleKernel, EFE) + 1;
slangAssert((mTargetAPI < SLANG_FEATURE_SINGLE_SOURCE_API ||
getForEachSlotNumber(FD->getName()) ==
@@ -401,7 +401,6 @@
RSContext::~RSContext() {
delete mLicenseNote;
- delete mDataLayout;
for (ExportableList::iterator I = mExportables.begin(),
E = mExportables.end();
I != E;
diff --git a/slang_rs_context.h b/slang_rs_context.h
index e6b4e8c..ff6cdac 100644
--- a/slang_rs_context.h
+++ b/slang_rs_context.h
@@ -85,7 +85,7 @@
unsigned int mTargetAPI;
bool mVerbose;
- llvm::DataLayout *mDataLayout;
+ const llvm::DataLayout &mDataLayout;
llvm::LLVMContext &mLLVMContext;
ExportableList mExportables;
@@ -146,7 +146,7 @@
inline clang::MangleContext &getMangleContext() const {
return *mMangleCtx;
}
- inline const llvm::DataLayout *getDataLayout() const { return mDataLayout; }
+ inline const llvm::DataLayout &getDataLayout() const { return mDataLayout; }
inline llvm::LLVMContext &getLLVMContext() const { return mLLVMContext; }
inline const clang::SourceManager *getSourceManager() const {
return &mPP.getSourceManager();
diff --git a/slang_rs_export_foreach.cpp b/slang_rs_export_foreach.cpp
index f7483e3..67b178e 100644
--- a/slang_rs_export_foreach.cpp
+++ b/slang_rs_export_foreach.cpp
@@ -73,7 +73,7 @@
mResultType = FD->getReturnType().getCanonicalType();
// Compute kernel functions are defined differently when the
// "__attribute__((kernel))" is set.
- if (FD->hasAttr<clang::KernelAttr>()) {
+ if (FD->hasAttr<clang::RenderScriptKernelAttr>()) {
valid &= validateAndConstructKernelParams(Context, FD);
} else {
valid &= validateAndConstructOldStyleParams(Context, FD);
@@ -434,8 +434,8 @@
}
// Anything tagged as a kernel("") is definitely used with ForEach.
- if (auto *Kernel = FD->getAttr<clang::KernelAttr>()) {
- return Kernel->getKernelKind().empty();
+ if (FD->hasAttr<clang::RenderScriptKernelAttr>()) {
+ return true;
}
if (RSSpecialFunc::isGraphicsRootRSFunc(targetAPI, FD)) {
@@ -469,7 +469,7 @@
unsigned RSExportForEach::getNumInputs(unsigned int targetAPI,
const clang::FunctionDecl *FD) {
unsigned numInputs = 0;
- for (const clang::ParmVarDecl* param : FD->params()) {
+ for (const clang::ParmVarDecl* param : FD->parameters()) {
if (!isSpecialKernelParameter(param->getName())) {
numInputs++;
}
diff --git a/slang_rs_export_func.cpp b/slang_rs_export_func.cpp
index 519ac59..7803908 100644
--- a/slang_rs_export_func.cpp
+++ b/slang_rs_export_func.cpp
@@ -138,7 +138,7 @@
return false;
const llvm::StructLayout *ParamTySL =
- getRSContext()->getDataLayout()->getStructLayout(ParamTy);
+ getRSContext()->getDataLayout().getStructLayout(ParamTy);
unsigned Index = 0;
for (RSExportRecordType::const_field_iterator FI = ERT->fields_begin(),
@@ -161,7 +161,7 @@
// Check size
size_t T1Size = F->getType()->getAllocSize();
- size_t T2Size = getRSContext()->getDataLayout()->getTypeAllocSize(T2);
+ size_t T2Size = getRSContext()->getDataLayout().getTypeAllocSize(T2);
if (T1Size != T2Size)
return false;
diff --git a/slang_rs_export_type.cpp b/slang_rs_export_type.cpp
index 7d07130..f229b44 100644
--- a/slang_rs_export_type.cpp
+++ b/slang_rs_export_type.cpp
@@ -937,11 +937,11 @@
}
size_t RSExportType::getStoreSize() const {
- return getRSContext()->getDataLayout()->getTypeStoreSize(getLLVMType());
+ return getRSContext()->getDataLayout().getTypeStoreSize(getLLVMType());
}
size_t RSExportType::getAllocSize() const {
- return getRSContext()->getDataLayout()->getTypeAllocSize(getLLVMType());
+ return getRSContext()->getDataLayout().getTypeAllocSize(getLLVMType());
}
RSExportType::RSExportType(RSContext *Context,
diff --git a/slang_rs_foreach_lowering.cpp b/slang_rs_foreach_lowering.cpp
index 6e9991e..743833d 100644
--- a/slang_rs_foreach_lowering.cpp
+++ b/slang_rs_foreach_lowering.cpp
@@ -385,7 +385,7 @@
unsigned int targetAPI) {
slangAssert(FD && FD->hasBody());
- mInsideKernel = FD->hasAttr<clang::KernelAttr>();
+ mInsideKernel = FD->hasAttr<clang::RenderScriptKernelAttr>();
VisitStmt(FD->getBody());
}
diff --git a/slang_rs_reflection.cpp b/slang_rs_reflection.cpp
index da55705..2c48c24 100644
--- a/slang_rs_reflection.cpp
+++ b/slang_rs_reflection.cpp
@@ -1980,7 +1980,7 @@
Level++;
}
std::string IndexVarName("ct");
- IndexVarName.append(llvm::utostr_32(Level));
+ IndexVarName.append(llvm::utostr(Level));
mOut.indent() << "for (int " << IndexVarName << " = 0; " << IndexVarName
<< " < " << ECAT->getNumElement() << "; " << IndexVarName << "++)";
diff --git a/slang_rs_reflection_cpp.cpp b/slang_rs_reflection_cpp.cpp
index e0a78f2..4c59073 100644
--- a/slang_rs_reflection_cpp.cpp
+++ b/slang_rs_reflection_cpp.cpp
@@ -789,7 +789,7 @@
Level++;
}
std::string IndexVarName("ct");
- IndexVarName.append(llvm::utostr_32(Level));
+ IndexVarName.append(llvm::utostr(Level));
C.indent() << "for (int " << IndexVarName << " = 0; " <<
IndexVarName << " < " << ECAT->getSize() << "; " <<
diff --git a/slang_rs_special_func.cpp b/slang_rs_special_func.cpp
index 56ae590..e89b83a 100644
--- a/slang_rs_special_func.cpp
+++ b/slang_rs_special_func.cpp
@@ -26,7 +26,7 @@
bool RSSpecialFunc::isGraphicsRootRSFunc(unsigned int targetAPI,
const clang::FunctionDecl *FD) {
- if (FD->hasAttr<clang::KernelAttr>()) {
+ if (FD->hasAttr<clang::RenderScriptKernelAttr>()) {
return false;
}
diff --git a/tests/F_kernel_badattr/stderr.txt.expect b/tests/F_kernel_badattr/stderr.txt.expect
index 0d206ad..cbbb736 100644
--- a/tests/F_kernel_badattr/stderr.txt.expect
+++ b/tests/F_kernel_badattr/stderr.txt.expect
@@ -1,4 +1,4 @@
-kernel_badattr.rs:8:27: error: 'kernel' attribute requires a string
-kernel_badattr.rs:12:20: error: 'kernel' attribute takes no more than 1 argument
-kernel_badattr.rs:4:46: error: Unknown kernel attribute argument 'unimplemented' in declaration of function 'kernel'
-kernel_badattr.rs:16:39: error: Unknown kernel attribute argument 'reduce' in declaration of function 'kernel4'
+kernel_badattr.rs:4:20: error: 'kernel' attribute takes no arguments
+kernel_badattr.rs:8:20: error: 'kernel' attribute takes no arguments
+kernel_badattr.rs:12:20: error: 'kernel' attribute takes no arguments
+kernel_badattr.rs:16:20: error: 'kernel' attribute takes no arguments