diff --git a/mingw-w64-clang-svn/PKGBUILD b/mingw-w64-clang-svn/PKGBUILD index ef2910d58d..e597f6be7a 100644 --- a/mingw-w64-clang-svn/PKGBUILD +++ b/mingw-w64-clang-svn/PKGBUILD @@ -3,7 +3,7 @@ _realname=clang pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-svn" "${MINGW_PACKAGE_PREFIX}-clang-analyzer-svn" "${MINGW_PACKAGE_PREFIX}-llvm-svn") # "${MINGW_PACKAGE_PREFIX}-compiler-rt-svn" -pkgver=51262.b335d96 +pkgver=53251.26380cd pkgrel=1 pkgdesc="LC language family frontend for LLVM (mingw-w64)" arch=('any') @@ -20,7 +20,7 @@ source=(#"llvm"::"svn+http://llvm.org/svn/llvm-project/llvm/trunk" "clang"::"git+http://llvm.org/git/clang.git" "rt"::"git+http://llvm.org/git/compiler-rt.git" "testsuite"::"git+http://llvm.org/git/test-suite.git" - #"libcxx"::"git+http://llvm.org/git/libcxx.git" + "libcxx"::"git+http://llvm.org/git/libcxx.git" clang-win64-seh.patch clang-mingw-driver.patch llvm-win64-exceptions.patch @@ -30,8 +30,9 @@ md5sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' - 'SKIP' - 'SKIP') + 'a93f92f34106c45bb1ed8eced9d18d21' + '043ecdc06235869457a0772fddfcc6ca' + 'a41d36c68351d781f224f688c90f7c09') pkgver() { cd "$srcdir/clang" @@ -42,7 +43,7 @@ pkgver() { prepare() { cd ${srcdir}/llvm - patch -p1 -i ${srcdir}/llvm-win64-exceptions.patch + #patch -p1 -i ${srcdir}/llvm-win64-exceptions.patch cd ${srcdir}/clang patch -p1 -i ${srcdir}/clang-mingw-driver.patch diff --git a/mingw-w64-clang-svn/clang-mingw-driver.patch b/mingw-w64-clang-svn/clang-mingw-driver.patch index 18987cbef1..f4b00cab36 100644 --- a/mingw-w64-clang-svn/clang-mingw-driver.patch +++ b/mingw-w64-clang-svn/clang-mingw-driver.patch @@ -80,7 +80,7 @@ index 0000000..87c0aa2 +#endif + if (llvm::sys::fs::exists(GCClibdir)) { + // Find subdirectory, should be the version of MinGW-w64 GCC -+ llvm::error_code EC; ++ std::error_code EC; + llvm::sys::fs::directory_iterator entry(StringRef(GCClibdir), EC); + if (!EC) + GCCVersion = llvm::sys::path::filename(entry->path()); diff --git a/mingw-w64-clang-svn/clang-win64-seh.patch b/mingw-w64-clang-svn/clang-win64-seh.patch index 94b9417b42..476938621d 100644 --- a/mingw-w64-clang-svn/clang-win64-seh.patch +++ b/mingw-w64-clang-svn/clang-win64-seh.patch @@ -19,15 +19,15 @@ diff --git a/include/clang/Driver/CC1Options.td b/include/clang/Driver/CC1Option index 5ffeb43..ab73ca8 100644 --- a/include/clang/Driver/CC1Options.td +++ b/include/clang/Driver/CC1Options.td -@@ -397,6 +397,8 @@ def fblocks_runtime_optional : Flag<["-"], "fblocks-runtime-optional">, +@@ -430,6 +430,8 @@ def fblocks_runtime_optional : Flag<["-"], "fblocks-runtime-optional">, HelpText<"Weakly link in the blocks runtime">; def fsjlj_exceptions : Flag<["-"], "fsjlj-exceptions">, HelpText<"Use SjLj style exceptions">; +def fseh_exceptions : Flag<["-"], "fseh-exceptions">, + HelpText<"Use SEH style exceptions">; - def main_file_name : Separate<["-"], "main-file-name">, - HelpText<"Main file name to use for debug info">; def split_dwarf_file : Separate<["-"], "split-dwarf-file">, + HelpText<"File name to use for split dwarf debug info output">; + def fno_wchar : Flag<["-"], "fno-wchar">, diff --git a/include/clang/Driver/ToolChain.h b/include/clang/Driver/ToolChain.h index ceb1c76..30d687f 100644 --- a/include/clang/Driver/ToolChain.h @@ -46,7 +46,7 @@ diff --git a/lib/CodeGen/CGException.cpp b/lib/CodeGen/CGException.cpp index cc03b0a..a4aa44b 100644 --- a/lib/CodeGen/CGException.cpp +++ b/lib/CodeGen/CGException.cpp -@@ -155,22 +155,27 @@ namespace { +@@ -137,25 +137,31 @@ namespace { static const EHPersonality &get(const LangOptions &Lang); static const EHPersonality GNU_C; static const EHPersonality GNU_C_SJLJ; @@ -61,19 +61,23 @@ index cc03b0a..a4aa44b 100644 }; } - const EHPersonality EHPersonality::GNU_C = { "__gcc_personality_v0", 0 }; - const EHPersonality EHPersonality::GNU_C_SJLJ = { "__gcc_personality_sj0", 0 }; -+const EHPersonality EHPersonality::GNU_C_SEH = { "__gcc_personality_seh0", 0 }; - const EHPersonality EHPersonality::NeXT_ObjC = { "__objc_personality_v0", 0 }; - const EHPersonality EHPersonality::GNU_CPlusPlus = { "__gxx_personality_v0", 0}; + const EHPersonality EHPersonality::GNU_C = { "__gcc_personality_v0", nullptr }; const EHPersonality - EHPersonality::GNU_CPlusPlus_SJLJ = { "__gxx_personality_sj0", 0 }; + EHPersonality::GNU_C_SJLJ = { "__gcc_personality_sj0", nullptr }; ++const EHPersonality ++EHPersonality::GNU_C_SEH = { "__gcc_personality_seh0", 0 }; + const EHPersonality + EHPersonality::NeXT_ObjC = { "__objc_personality_v0", nullptr }; + const EHPersonality + EHPersonality::GNU_CPlusPlus = { "__gxx_personality_v0", nullptr }; + const EHPersonality + EHPersonality::GNU_CPlusPlus_SJLJ = { "__gxx_personality_sj0", nullptr }; const EHPersonality +EHPersonality::GNU_CPlusPlus_SEH = { "__gxx_personality_seh0", 0 }; +const EHPersonality EHPersonality::GNU_ObjC = {"__gnu_objc_personality_v0", "objc_exception_throw"}; const EHPersonality - EHPersonality::GNU_ObjCXX = { "__gnustep_objcxx_personality_v0", 0 }; + EHPersonality::GNU_ObjCXX = { "__gnustep_objcxx_personality_v0", nullptr }; @@ -180,6 +185,8 @@ EHPersonality::GNUstep_ObjC = { "__gnustep_objc_personality_v0", 0 }; static const EHPersonality &getCPersonality(const LangOptions &L) { if (L.SjLjExceptions)