diff --git a/cmake/CompilerOptions.cmake b/cmake/CompilerOptions.cmake
index c92c14c45eea9f6969c6395bc67964fa37f16b30..3788419abfa040010fa90fc368d9a1bab23e137b 100644
--- a/cmake/CompilerOptions.cmake
+++ b/cmake/CompilerOptions.cmake
@@ -5,6 +5,17 @@ set(CXXOPT_PTHREAD "-pthread")
 set(CXXOPT_CXX11 "-std=c++11")
 set(CXXOPT_WALL "-Wall")
 
+if(${CMAKE_CXX_COMPILER_ID} MATCHES "XL")
+    # Disable 'missing-braces' warning: this will inappropriately
+    # flag initializations such as
+    #     std::array<int,3> a={1,2,3};
+
+    set(CXXOPT_WALL "${CXXOPT_WALL} -Wno-missing-braces")
+
+    # CMake, bless its soul, likes to insert this unsupported flag. Hilarity ensues.
+    string(REPLACE "-qhalt=e" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+endif()
+
 if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
     # Disable 'missing-braces' warning: this will inappropriately
     # flag initializations such as
diff --git a/modcc/lexer.cpp b/modcc/lexer.cpp
index 448beb74d1a2a9e1005c7f01cc39f0c8fd72979f..f0bc0e19d127eba7ccccb0f674342c457178a70b 100644
--- a/modcc/lexer.cpp
+++ b/modcc/lexer.cpp
@@ -23,7 +23,7 @@ inline bool is_whitespace(char c) {
     return (c==' ' || c=='\t' || c=='\v' || c=='\f');
 }
 inline bool is_eof(char c) {
-    return (c==0 || c==EOF);
+    return (c==0);
 }
 inline bool is_operator(char c) {
     return (c=='+' || c=='-' || c=='*' || c=='/' || c=='^' || c=='\'');
@@ -47,7 +47,6 @@ Token Lexer::parse() {
         switch(*current_) {
             // end of file
             case 0      :       // end of string
-            case EOF    :       // end of file
                 t.spelling = "eof";
                 t.type = tok::eof;
                 return t;
diff --git a/src/threading/pss_common.h b/src/threading/pss_common.h
index d49f6dbf41777dadad91de7be19ad41894f5374a..0cb0b557fb7b4ababfd7c21cb82f8aca71e88d2e 100644
--- a/src/threading/pss_common.h
+++ b/src/threading/pss_common.h
@@ -51,8 +51,8 @@ void serial_destroy( RandomAccessIterator zs, RandomAccessIterator ze ) {
 template<class RandomAccessIterator1, class RandomAccessIterator2, class RandomAccessIterator3, class Compare>
 void serial_move_merge( RandomAccessIterator1 xs, RandomAccessIterator1 xe, RandomAccessIterator2 ys, RandomAccessIterator2 ye, RandomAccessIterator3 zs, Compare comp ) {
     if( xs!=xe ) {
-        if( ys!=ye )
-            for(;;)
+        if( ys!=ye ) {
+            for(;;) {
                 if( comp(*ys,*xs) ) {
                     *zs = std::move(*ys);
                     ++zs;
@@ -62,6 +62,8 @@ void serial_move_merge( RandomAccessIterator1 xs, RandomAccessIterator1 xe, Rand
                     ++zs;
                     if( ++xs==xe ) goto movey;
                 }
+            }
+        }
         ys = xs;
         ye = xe;
     }
diff --git a/tests/unit/test_uninitialized.cpp b/tests/unit/test_uninitialized.cpp
index 182bf636413800cb06a0734bf0bb30c1ecd104fd..864f2dd5535ddc44a424c6c9d5751d0bf0a468cd 100644
--- a/tests/unit/test_uninitialized.cpp
+++ b/tests/unit/test_uninitialized.cpp
@@ -151,6 +151,7 @@ TEST(uninitialized,apply) {
     const uninitialized<int> ud(ua);
 
     r=ud.apply(A);
+
     EXPECT_EQ(12,ua.cref());
     EXPECT_EQ(12,ud.cref());
     EXPECT_EQ(13,r);
diff --git a/tests/validation/convergence_test.hpp b/tests/validation/convergence_test.hpp
index 0561e7d76a9088b011b4bbd79f11e273f891b389..4d8ea28dffbda02566a7e147ead45eef96acd555 100644
--- a/tests/validation/convergence_test.hpp
+++ b/tests/validation/convergence_test.hpp
@@ -71,7 +71,7 @@ public:
     }
 
     template <typename Model>
-    void run(Model& m, Param p, float t_end, float dt, const std::vector<float>& excl={}) {
+    void run(Model& m, Param p, float t_end, float dt, const std::vector<float>& excl) {
         // reset samplers and attach to probe locations
         for (auto& se: cell_samplers_) {
             se.sampler.reset();
diff --git a/tests/validation/validate_soma.hpp b/tests/validation/validate_soma.hpp
index 52bc7d5e087ed575372aa524812d9b23ad38fc33..2658ee1c9adca61e6efff6b0b9e728aa39cb0a4e 100644
--- a/tests/validation/validate_soma.hpp
+++ b/tests/validation/validate_soma.hpp
@@ -46,7 +46,7 @@ void validate_soma() {
 
             model.reset();
             float dt = float(1./oo_dt);
-            runner.run(model, dt, t_end, dt);
+            runner.run(model, dt, t_end, dt, {});
         }
     }
 end: