diff --git a/packages/PEGTL/.gitrepo b/packages/PEGTL/.gitrepo
index 527ac34bcd3ef85a929565fc2de29b6d5e1cdcf0..50937092fe28d076b46cd3287053b9012366094d 100644
--- a/packages/PEGTL/.gitrepo
+++ b/packages/PEGTL/.gitrepo
@@ -6,7 +6,7 @@
 [subrepo]
 	remote = git@github.com:taocpp/PEGTL.git
 	branch = master
-	commit = 1d7ede3134b8b4864140dc1a5be494ac570a309e
-	parent = 15fe2ba73eafb183b53730d51702665841edd32f
+	commit = ed5a3f88d5ed446d8afc3556e1b6ad5757e3351e
+	parent = ef714b6fc3318ba1f5f6eea47b36a843c699680b
 	cmdver = 0.4.0
 	method = merge
diff --git a/packages/PEGTL/.travis.yml b/packages/PEGTL/.travis.yml
index b127ea3cab5bde286cd3d5c89ab0b32855fbaf9a..180816260889811bf2a53f3d0b8507a934683e05 100644
--- a/packages/PEGTL/.travis.yml
+++ b/packages/PEGTL/.travis.yml
@@ -87,6 +87,19 @@ matrix:
         - CXX=clang++-8
         - CPPFLAGS=-fno-rtti
 
+    - compiler: clang
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+            - sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
+              key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
+          packages:
+            - clang-9
+            - g++-9
+      env:
+        - CXX=clang++-9
+
     - os: osx
       osx_image: xcode9.4
       compiler: clang
@@ -94,7 +107,13 @@ matrix:
         - CXX=clang++
 
     - os: osx
-      osx_image: xcode10.2
+      osx_image: xcode10.3
+      compiler: clang
+      env:
+        - CXX=clang++
+
+    - os: osx
+      osx_image: xcode11.2
       compiler: clang
       env:
         - CXX=clang++
diff --git a/packages/PEGTL/README.md b/packages/PEGTL/README.md
index 082f66d75017ba584d03350f17afe3ed7b18c7db..7c3354e5cfc6ce33262a4cd32f8a46151222acb2 100644
--- a/packages/PEGTL/README.md
+++ b/packages/PEGTL/README.md
@@ -66,12 +66,13 @@ Each commit is automatically tested with multiple architectures, operating syste
 * macOS (using libc++)
 
   * macOS 10.13, Xcode 9.4
-  * macOS 10.14, Xcode 10.2
+  * macOS 10.14, Xcode 10.3
+  * macOS 10.14, Xcode 11.2
 
 * Ubuntu 16.04 LTS (using libstdc++)
 
   * GCC 7.x, 8.x, 9.x
-  * Clang 5.x, 6.x, 7.x, 8.x
+  * Clang 5.x, 6.x, 7.x, 8.x, 9.x
 
 Additionally, each commit is checked with Clang's [Static Analyzer](https://clang-analyzer.llvm.org/), GCC's and Clang's [sanitizers](https://github.com/google/sanitizers), [`clang-tidy`](http://clang.llvm.org/extra/clang-tidy/), and [`valgrind`](http://valgrind.org/).
 Code coverage is automatically measured and the unit tests cover 100% of the core library code (for releases).
diff --git a/packages/PEGTL/include/tao/pegtl/internal/endian.hpp b/packages/PEGTL/include/tao/pegtl/internal/endian.hpp
index 733248ec8bca5096607381cef98394d44738d9c8..758dec29f23b39b68daa7d05563c38e82d689dbb 100644
--- a/packages/PEGTL/include/tao/pegtl/internal/endian.hpp
+++ b/packages/PEGTL/include/tao/pegtl/internal/endian.hpp
@@ -9,7 +9,7 @@
 
 #include "../config.hpp"
 
-#if defined( _WIN32 ) && !defined( __MINGW32__ )
+#if defined( _WIN32 ) && !defined( __MINGW32__ ) && !defined( __CYGWIN__ )
 #include "endian_win.hpp"
 #else
 #include "endian_gcc.hpp"
diff --git a/packages/PEGTL/include/tao/pegtl/internal/iterator.hpp b/packages/PEGTL/include/tao/pegtl/internal/iterator.hpp
index 490a8c7335c53022c7f63e4d56960e3c863bb2c0..cf8f319ad88a6e6c87a85022b3c524bb6bf4b20d 100644
--- a/packages/PEGTL/include/tao/pegtl/internal/iterator.hpp
+++ b/packages/PEGTL/include/tao/pegtl/internal/iterator.hpp
@@ -12,7 +12,7 @@ namespace TAO_PEGTL_NAMESPACE::internal
 {
    struct iterator
    {
-      iterator() noexcept = default;
+      iterator() = default;
 
       explicit iterator( const char* in_data ) noexcept
          : data( in_data )
diff --git a/packages/PEGTL/src/test/pegtl/demangle.cpp b/packages/PEGTL/src/test/pegtl/demangle.cpp
index a17e754d241c617a67f161fd7d44b5a2b7bc2302..839b2287da7920d57feb796ca84b8c8d436f8058 100644
--- a/packages/PEGTL/src/test/pegtl/demangle.cpp
+++ b/packages/PEGTL/src/test/pegtl/demangle.cpp
@@ -15,7 +15,7 @@ namespace TAO_PEGTL_NAMESPACE
 
    void unit_test()
    {
-#if defined( __GNUC__ ) && ( __GNUC__ == 9 ) || ( __GNUC_MINOR__ <= 2 )
+#if !defined( __clang__ ) && defined( __GNUC__ ) && ( __GNUC__ == 9 ) && ( __GNUC_MINOR__ <= 2 )
       // see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91155
       test< int >( "i" );
       test< double >( "d" );