creduce: port to llvm-16
This commit is contained in:
235
mingw-w64-creduce/001-port-to-llvm-16.patch
Normal file
235
mingw-w64-creduce/001-port-to-llvm-16.patch
Normal 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);
|
||||
@@ -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 \
|
||||
|
||||
Reference in New Issue
Block a user