creduce: port to llvm-16

This commit is contained in:
مهدي شينون (Mehdi Chinoune)
2023-04-28 17:33:33 +01:00
parent 0f9788f22b
commit 59b85e0fd4
2 changed files with 251 additions and 10 deletions

View File

@@ -0,0 +1,235 @@
From 8ab9a69caf13ce24172737e8bfd09de51a1ecb6a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bernhard=20Rosenkr=C3=A4nzer?= <bero@lindev.ch>
Date: Sat, 15 Apr 2023 02:35:12 +0200
Subject: [PATCH] Port to LLVM 16.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Bernhard Rosenkränzer <bero@lindev.ch>
---
clang_delta/CommonRenameClassRewriteVisitor.h | 3 +-
clang_delta/ExpressionDetector.cpp | 4 +--
clang_delta/RemoveNestedFunction.cpp | 6 ++--
clang_delta/TemplateArgToInt.cpp | 5 ++--
clang_delta/Transformation.cpp | 29 ++++++++-----------
clang_delta/Transformation.h | 9 ++----
6 files changed, 23 insertions(+), 33 deletions(-)
diff --git a/clang_delta/CommonRenameClassRewriteVisitor.h b/clang_delta/CommonRenameClassRewriteVisitor.h
index ba860d9d..023937ac 100644
--- a/clang_delta/CommonRenameClassRewriteVisitor.h
+++ b/clang_delta/CommonRenameClassRewriteVisitor.h
@@ -420,8 +420,7 @@ bool CommonRenameClassRewriteVisitor<T>::TraverseTemplateArgumentLoc(
return getDerived().TraverseStmt(ArgLoc.getSourceExpression());
case TemplateArgument::Pack:
- return getDerived().TraverseTemplateArguments(Arg.pack_begin(),
- Arg.pack_size());
+ return getDerived().TraverseTemplateArguments(Arg);
}
return true;
diff --git a/clang_delta/ExpressionDetector.cpp b/clang_delta/ExpressionDetector.cpp
index e708cd68..cf703924 100644
--- a/clang_delta/ExpressionDetector.cpp
+++ b/clang_delta/ExpressionDetector.cpp
@@ -62,7 +62,7 @@ class IncludesPPCallbacks : public PPCallbacks {
virtual void InclusionDirective(SourceLocation HashLoc,
const Token &IncludeTok,
StringRef FileName, bool IsAngled,
- CharSourceRange FilenameRange, Optional<FileEntryRef> File,
+ CharSourceRange FilenameRange, OptionalFileEntryRef File,
StringRef SearchPath, StringRef RelativePath,
const Module *Imported,
SrcMgr::CharacteristicKind FileType) override;
@@ -82,7 +82,7 @@ void IncludesPPCallbacks::InclusionDirective(SourceLocation HashLoc,
StringRef FileName,
bool /*IsAngled*/,
CharSourceRange /*FilenameRange*/,
- Optional<FileEntryRef> /*File*/,
+ OptionalFileEntryRef /*File*/,
StringRef /*SearchPath*/,
StringRef /*RelativePath*/,
const Module * /*Imported*/,
diff --git a/clang_delta/RemoveNestedFunction.cpp b/clang_delta/RemoveNestedFunction.cpp
index f3ebc1cf..8948d76b 100644
--- a/clang_delta/RemoveNestedFunction.cpp
+++ b/clang_delta/RemoveNestedFunction.cpp
@@ -183,18 +183,18 @@ void RemoveNestedFunction::getVarStrForTemplateSpecialization(
std::string &VarStr,
const TemplateSpecializationType *TST)
{
- unsigned NumArgs = TST->getNumArgs();
+ unsigned NumArgs = TST->template_arguments().size();
if (NumArgs == 0) {
return;
}
std::string ArgStr;
llvm::raw_string_ostream Stream(ArgStr);
- TST->getArg(0).print(Context->getPrintingPolicy(), Stream,
+ TST->template_arguments()[0].print(Context->getPrintingPolicy(), Stream,
/*IncludeType*/ true);
for (unsigned I = 1; I < NumArgs; ++I) {
- const TemplateArgument &Arg = TST->getArg(I);
+ const TemplateArgument &Arg = TST->template_arguments()[I];
Stream << ", ";
Arg.print(Context->getPrintingPolicy(), Stream, /*IncludeType*/ true);
}
diff --git a/clang_delta/TemplateArgToInt.cpp b/clang_delta/TemplateArgToInt.cpp
index d005f8af..e8b44a2a 100644
--- a/clang_delta/TemplateArgToInt.cpp
+++ b/clang_delta/TemplateArgToInt.cpp
@@ -357,8 +357,7 @@ void TemplateArgToInt::handleOneType(const Type *Ty)
if (!SubstType)
return;
- const TemplateTypeParmType *ParmType = SubstType->getReplacedParameter();
- TemplateTypeParmDecl *ParmDecl = ParmType->getDecl();
+ const TemplateTypeParmDecl *ParmDecl = SubstType->getReplacedParameter();
TransAssert(ParmDecl && "Invalid ParmDecl!");
const TemplateDecl *TmplD = ParamToTemplateDecl[ParmDecl];
if (TmplD == NULL) {
@@ -384,7 +383,7 @@ void TemplateArgToInt::handleOneType(const Type *Ty)
TemplateParameterIdxSet *InvalidIdx =
DeclToParamIdx[dyn_cast<TemplateDecl>(TmplD->getCanonicalDecl())];
TransAssert(InvalidIdx && "NULL InvalidIdx!");
- InvalidIdx->insert(ParmType->getIndex());
+ InvalidIdx->insert(ParmDecl->getIndex());
}
TemplateArgToInt::~TemplateArgToInt()
diff --git a/clang_delta/Transformation.cpp b/clang_delta/Transformation.cpp
index 0bd58218..b350eec5 100644
--- a/clang_delta/Transformation.cpp
+++ b/clang_delta/Transformation.cpp
@@ -807,7 +807,7 @@ const CXXRecordDecl *Transformation::getBaseDeclFromType(const Type *Ty)
case Type::TypeOf: {
return getBaseDeclFromType(
- dyn_cast<TypeOfType>(Ty)->getUnderlyingType().getTypePtr());
+ dyn_cast<TypeOfType>(Ty)->getUnmodifiedType().getTypePtr());
}
default:
@@ -876,8 +876,7 @@ bool Transformation::isBeforeColonColon(TypeLoc &Loc)
}
bool Transformation::replaceDependentNameString(const Type *Ty,
- const TemplateArgument *Args,
- unsigned NumArgs,
+ ArrayRef<TemplateArgument> Args,
std::string &Str,
bool &Typename)
{
@@ -901,7 +900,7 @@ bool Transformation::replaceDependentNameString(const Type *Ty,
return false;
unsigned Idx = ParmTy->getIndex();
- TransAssert((Idx < NumArgs) && "Bad Parm Index!");
+ TransAssert((Idx < Args.size()) && "Bad Parm Index!");
const TemplateArgument Arg = Args[Idx];
if (Arg.getKind() != TemplateArgument::Type)
return false;
@@ -915,13 +914,12 @@ bool Transformation::replaceDependentNameString(const Type *Ty,
bool Transformation::getTemplateTypeParmString(
const TemplateTypeParmType *ParmTy,
- const TemplateArgument *Args,
- unsigned NumArgs,
+ ArrayRef<TemplateArgument> Args,
std::string &Str)
{
unsigned Idx = ParmTy->getIndex();
// we could have default template args, skip this case for now
- if (Idx >= NumArgs)
+ if (Idx >= Args.size())
return false;
const TemplateArgument Arg = Args[Idx];
if (Arg.getKind() != TemplateArgument::Type)
@@ -933,8 +931,7 @@ bool Transformation::getTemplateTypeParmString(
bool Transformation::getTypedefString(const StringRef &Name,
const CXXRecordDecl *CXXRD,
- const TemplateArgument *Args,
- unsigned NumArgs,
+ ArrayRef<TemplateArgument> Args,
std::string &Str,
bool &Typename)
{
@@ -948,12 +945,12 @@ bool Transformation::getTypedefString(const StringRef &Name,
Type::TypeClass TC = UnderlyingTy->getTypeClass();
if (TC == Type::DependentName) {
if (replaceDependentNameString(UnderlyingTy, Args,
- NumArgs, Str, Typename))
+ Str, Typename))
return true;
}
else if (const TemplateTypeParmType *ParmTy =
UnderlyingTy->getAs<TemplateTypeParmType>()) {
- if (getTemplateTypeParmString(ParmTy, Args, NumArgs, Str))
+ if (getTemplateTypeParmString(ParmTy, Args, Str))
return true;
}
}
@@ -970,7 +967,7 @@ bool Transformation::getTypedefString(const StringRef &Name,
const CXXRecordDecl *BaseDef = Base->getDefinition();
if (!BaseDef)
continue;
- if (getTypedefString(Name, BaseDef, Args, NumArgs, Str, Typename))
+ if (getTypedefString(Name, BaseDef, Args, Str, Typename))
return true;
}
@@ -998,15 +995,13 @@ bool Transformation::getDependentNameTypeString(
if (!BaseDef)
return false;
- unsigned NumArgs = 0;
- const TemplateArgument *Args = NULL;
+ ArrayRef<TemplateArgument> Args;
if (const TemplateSpecializationType *TST =
Ty->getAs<TemplateSpecializationType>()) {
- NumArgs = TST->getNumArgs();
- Args = TST->getArgs();
+ Args = TST->template_arguments();
}
return getTypedefString(IdInfo->getName(),
- BaseDef, Args, NumArgs, Str, Typename);
+ BaseDef, Args, Str, Typename);
}
bool Transformation::getTypeString(const QualType &QT,
diff --git a/clang_delta/Transformation.h b/clang_delta/Transformation.h
index 142f7eec..5b2da62f 100644
--- a/clang_delta/Transformation.h
+++ b/clang_delta/Transformation.h
@@ -271,8 +271,7 @@ friend class clang_delta_common_visitor::CommonRenameClassRewriteVisitor;
bool getTypedefString(const llvm::StringRef &Name,
const clang::CXXRecordDecl *CXXRD,
- const clang::TemplateArgument *Args,
- unsigned NumArgs,
+ const llvm::ArrayRef<clang::TemplateArgument> Args,
std::string &Str,
bool &Typename);
@@ -281,14 +280,12 @@ friend class clang_delta_common_visitor::CommonRenameClassRewriteVisitor;
bool &Typename);
bool replaceDependentNameString(const clang::Type *Ty,
- const clang::TemplateArgument *Args,
- unsigned NumArgs,
+ const llvm::ArrayRef<clang::TemplateArgument> Args,
std::string &Str,
bool &Typename);
bool getTemplateTypeParmString(const clang::TemplateTypeParmType *ParmTy,
- const clang::TemplateArgument *Args,
- unsigned NumArgs,
+ const llvm::ArrayRef<clang::TemplateArgument> Args,
std::string &Str);
unsigned getNumExplicitDecls(const clang::CXXRecordDecl *CXXRD);

View File

@@ -5,7 +5,7 @@ pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-git")
pkgver=2.10.0.r96.g8d56bee
pkgrel=2
pkgrel=3
_commit=8d56bee3e1d2577fc8afd2ecc03b1323d6873404
pkgdesc="A C program reducer (mingw-w64)"
depends=('perl-Benchmark-Timer'
@@ -20,11 +20,15 @@ arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
url='https://github.com/csmith-project/creduce'
license=('spdx:NCSA')
makedepends=("${MINGW_PACKAGE_PREFIX}-autotools" "${MINGW_PACKAGE_PREFIX}-cc" "git")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-autotools"
"git")
source=(${_realname}::git+https://github.com/csmith-project/creduce#commit=${_commit}
"llvm-config-cygpath")
"llvm-config-cygpath"
"001-port-to-llvm-16.patch")
sha256sums=('SKIP'
'03a7239d1e26d8a5dd5f405e10826679725cae6c01a9c37e80c6f1c184dad0a9')
'03a7239d1e26d8a5dd5f405e10826679725cae6c01a9c37e80c6f1c184dad0a9'
'c7de1b06bd9fd840db1c5e9d3f9b9516a76cd14d9e969547bdaa995c5af4bbab')
pkgver() {
cd "${srcdir}/${_realname}"
@@ -32,15 +36,17 @@ pkgver() {
}
prepare() {
cd "${srcdir}"
[[ -d tools ]] && rm -rf tools
mkdir tools
cp -f "${srcdir}"/llvm-config-cygpath tools/llvm-config
cd "${srcdir}"/${_realname}
# https://github.com/csmith-project/creduce/pull/254
git apply "${srcdir}"/001-port-to-llvm-16.patch
[[ -d "${srcdir}"/tools ]] && rm -rf "${srcdir}"tools
mkdir -p "${srcdir}"/tools
cp -f "${srcdir}"/llvm-config-cygpath "${srcdir}"/tools/llvm-config
}
build() {
[[ -d build-${MSYSTEM} ]] && rm -rf build-${MSYSTEM}
mkdir build-${MSYSTEM} && cd build-${MSYSTEM}
mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM}
PATH="${srcdir}/tools:$PATH" \
../${_realname}/configure \