diff --git a/ci.hocon b/ci.hocon
index 39bed20f3574b885cac057a0be42d0abb0ed9983..e001b702457006968cf8797dbac20874d2a76f24 100644
--- a/ci.hocon
+++ b/ci.hocon
@@ -37,6 +37,7 @@ logfiles : [
     "com.oracle.truffle.r.native/gnur/libiconv-*/iconv_configure.log"
     "com.oracle.truffle.r.native/gnur/libiconv-*/iconv_make.log"
     "*-tests/*.Rout"
+    "com.oracle.truffle.r.native/gnur/R-*/config.log"
   ]
 
 # This is needed by all (Linux) builds but is specific to the module system employed
@@ -46,7 +47,7 @@ logfiles : [
 pkgEnvironment: {
   environment : {
     PKG_INCLUDE_FLAGS_OVERRIDE : """-I/cm/shared/apps/zlib/1.2.8/include -I/cm/shared/apps/bzip2/1.0.6/include -I/cm/shared/apps/xz/5.2.2/include -I/cm/shared/apps/pcre/8.38/include -I/cm/shared/apps/curl/7.50.1/include"""
-    PKG_LDFLAGS_OVERRIDE : """-L/cm/shared/apps/zlib/1.2.8/lib -L/cm/shared/apps/bzip2/1.0.6/lib -L/cm/shared/apps/xz/5.2.2/lib -L/cm/shared/apps/pcre/8.38/lib -L/cm/shared/apps/curl/7.50.1/lib -L/cm/shared/apps/gcc/4.9.1/lib64"""
+    PKG_LDFLAGS_OVERRIDE : """"-L/cm/shared/apps/zlib/1.2.8/lib -L/cm/shared/apps/bzip2/1.0.6/lib -L/cm/shared/apps/xz/5.2.2/lib -L/cm/shared/apps/pcre/8.38/lib -L/cm/shared/apps/curl/7.50.1/lib -L/cm/shared/apps/gcc/4.9.1/lib64""""
 	TZDIR: "/usr/share/zoneinfo"
   }
 }
@@ -114,7 +115,7 @@ darwinEnvironment : {
     F77: "/usr/local/bin/gfortran-4.9"
     TZDIR: "/usr/share/zoneinfo"
 	PKG_INCLUDE_FLAGS_OVERRIDE : """-I/cm/shared/apps/zlib/1.2.8/include -I/cm/shared/apps/bzip2/1.0.6/include -I/cm/shared/apps/xz/5.2.2/include -I/cm/shared/apps/pcre/8.38/include -I/cm/shared/apps/curl/7.50.1/include"""
-    PKG_LDFLAGS_OVERRIDE : """-L/cm/shared/apps/zlib/1.2.8/lib -L/cm/shared/apps/bzip2/1.0.6/lib -L/cm/shared/apps/xz/5.2.2/lib -L/cm/shared/apps/pcre/8.38/lib -L/cm/shared/apps/curl/7.50.1/lib -L/cm/shared/apps/gcc/4.9.1/lib64"""
+    PKG_LDFLAGS_OVERRIDE : """"-L/cm/shared/apps/zlib/1.2.8/lib -L/cm/shared/apps/bzip2/1.0.6/lib -L/cm/shared/apps/xz/5.2.2/lib -L/cm/shared/apps/pcre/8.38/lib -L/cm/shared/apps/curl/7.50.1/lib -L/cm/shared/apps/gcc/4.9.1/lib64""""
   }
 }
 
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
index 829ba8654d0ebf9c1fbb3cd4cf6d77794a709551..d0d48097d59d96b28d8e3770e37f6f31bb0d5131 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java
@@ -224,30 +224,16 @@ class RRuntimeASTAccessImpl implements RRuntimeASTAccess {
     @Override
     @TruffleBoundary
     public Object createLanguageFromList(RList list, RLanguage.RepType repType) {
-        int origLength = list.getLength();
-        int length = origLength;
+        int length = list.getLength();
         if (length == 0) {
             return RNull.instance;
         } else if (repType == RLanguage.RepType.CALL) {
-
-            Object fnSym = list.getDataAtAsObject(0);
-            /**
-             * A language object representing a replacement normally consists of three elements: the
-             * assignment symbol, the replacement function and the assigned value (i.e. rhs).
-             * However, under certain circumstances the last element (rhs) can get removed by
-             * assigning NULL, e.g. l <- quote(a(x)<–1); l[[3]] <- NULL. In such a case that
-             * language object is treated as if its third element were the NULL constant.
-             */
-            if (length == 2 && fnSym instanceof RSymbol && ((RSymbol) fnSym).getName() == Utils.intern("<-")) {
-                length++;
-            }
-
             RStringVector formals = list.getNames();
 
             List<RCodeBuilder.Argument<RSyntaxNode>> argList = new ArrayList<>(length - 1);
             for (int i = 1; i < length; i++) {
-                String formal = formals == null || i == origLength ? null : formals.getDataAt(i);
-                RSyntaxNode syntaxArg = i < origLength ? (RSyntaxNode) unwrapToRNode(list.getDataAtAsObject(i)) : ConstantNode.create(RNull.instance);
+                String formal = formals == null ? null : formals.getDataAt(i);
+                RSyntaxNode syntaxArg = (RSyntaxNode) unwrapToRNode(list.getDataAtAsObject(i));
                 if (formal != null) {
                     argList.add(RCodeBuilder.argument(RSourceSectionNode.LAZY_DEPARSE, formal, syntaxArg));
                 } else {
@@ -255,7 +241,7 @@ class RRuntimeASTAccessImpl implements RRuntimeASTAccess {
                 }
             }
 
-            RNode fn = unwrapToRNode(fnSym);
+            RNode fn = unwrapToRNode(list.getDataAtAsObject(0));
             RSyntaxNode call = RContext.getASTBuilder().call(RSourceSectionNode.LAZY_DEPARSE, fn.asRSyntaxNode(), argList);
             RLanguage result = RDataFactory.createLanguage(call.asRNode());
             if (formals != null && formals.getLength() > 0 && formals.getDataAt(0).length() > 0) {
diff --git a/com.oracle.truffle.r.native/Makefile b/com.oracle.truffle.r.native/Makefile
index 46d9c03cc2cc44b689afaff8737debaf43855601..dfc68d8f17b70e2af859c3bfdc9f581495c37e0e 100644
--- a/com.oracle.truffle.r.native/Makefile
+++ b/com.oracle.truffle.r.native/Makefile
@@ -58,12 +58,12 @@ clean:
 
 version.source := $(shell cat version.source)
 
-$(info version: $(version.source))
+#$(info version: $(version.source))
 ifeq ($(wildcard version.built),)
 	doclean = 1
 else
 version.built := $(shell cat version.built)
-$(info version.built: $(version.built))
+#$(info version.built: $(version.built))
 ifneq ($(version.source),$(version.built))
 	doclean = 1
 else
diff --git a/com.oracle.truffle.r.native/gnur/Makefile.gnur b/com.oracle.truffle.r.native/gnur/Makefile.gnur
index 4533af857074b1700728819a3b30ba6d94c5191a..7c7543f43385e303e75d41e3ff04002474509a66 100644
--- a/com.oracle.truffle.r.native/gnur/Makefile.gnur
+++ b/com.oracle.truffle.r.native/gnur/Makefile.gnur
@@ -115,7 +115,7 @@ ifneq ($(PKG_INCLUDE_FLAGS_OVERRIDE),)
 endif
 
 ifneq ($(PKG_LDFLAGS_OVERRIDE),)
-        GNUR_CONFIG_FLAGS := $(GNUR_CONFIG_FLAGS) LDFLAGS="$(PKG_LDFLAGS_OVERRIDE)"
+        GNUR_CONFIG_FLAGS := $(GNUR_CONFIG_FLAGS) LDFLAGS=$(PKG_LDFLAGS_OVERRIDE)
 endif
 
 # setup for LLVM (if enabled)
diff --git a/com.oracle.truffle.r.native/gnur/configure.patch b/com.oracle.truffle.r.native/gnur/configure.patch
deleted file mode 100644
index b4f0be9936176b6dc7ce55cc96c9234ecb966b97..0000000000000000000000000000000000000000
--- a/com.oracle.truffle.r.native/gnur/configure.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- ./R-3.3.2/configure Mon Oct 24 04:34:26 2016
-+++ ./configure.new     Wed Jul 26 04:43:08 2017
-@@ -35507,10 +35507,11 @@
- #include <string.h>
- #include <zlib.h>
- int main() {
--#ifdef ZLIB_VERSION
--/* Work around Debian bug: it uses 1.2.3.4 even though there was no such
--   version on the master site zlib.net */
--  exit(strncmp(ZLIB_VERSION, "1.2.5", 5) < 0);
-+#ifdef ZLIB_VERNUM
-+  if (ZLIB_VERNUM < 0x1250) {
-+    exit(1);
-+  }
-+  exit(0);
- #else
-   exit(1);
- #endif
diff --git a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/BinaryBooleanNodeTest.java b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/BinaryBooleanNodeTest.java
index e42acad5d95fe69b0a8e2d96adf8f124130305f1..bf64977ae002ce67cbfd57ae6051136beedb1ed0 100644
--- a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/BinaryBooleanNodeTest.java
+++ b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/BinaryBooleanNodeTest.java
@@ -181,7 +181,7 @@ public class BinaryBooleanNodeTest extends BinaryVectorTest {
 
     private static RType getResultType(BooleanOperationFactory factory, RAbstractVector a, RAbstractVector b) {
         RType resultType;
-        if ((factory == BinaryLogic.AND || factory == BinaryLogic.OR) && getArgumentType(a, b) == RType.Raw && a.getLength() > 0 && b.getLength() > 0) {
+        if ((factory == BinaryLogic.AND || factory == BinaryLogic.OR) && getArgumentType(a, b) == RType.Raw) {
             resultType = RType.Raw;
         } else {
             resultType = RType.Logical;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java
index 410699b61e260112d39191d14a591add6a4f3567..4aac9d4b03aa25c3b7117f06684dac68da56df95 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java
@@ -248,7 +248,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode.Arg2 {
 
         RType argumentType = RType.maxPrecedence(leftVector.getRType(), rightVector.getRType());
         RType resultType = RType.Logical;
-        if (isLogicOp(operation) && argumentType == RType.Raw && leftVector.getLength() > 0 && rightVector.getLength() > 0) {
+        if (isLogicOp(operation) && argumentType == RType.Raw) {
             resultType = RType.Raw;
         } else {
             resultType = RType.Logical;
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/EvaluatedArgumentsVisitor.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/EvaluatedArgumentsVisitor.java
index f9fea752a258a036dd7fd1d9a5b3036059e36f9e..fa3254ef13d6cbded74e37747af70715980050ed 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/EvaluatedArgumentsVisitor.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/EvaluatedArgumentsVisitor.java
@@ -124,7 +124,6 @@ public final class EvaluatedArgumentsVisitor extends RSyntaxVisitor<Info> {
             }
             if (symbol.equals("<-")) {
                 Info info = Info.createNew();
-                assert arguments.length == 2;
                 RSyntaxElement current = arguments[0];
                 if (arguments[0] instanceof RSyntaxLookup) {
                     info.maybeAssignedNames.add(((RSyntaxLookup) arguments[0]).getIdentifier());
@@ -139,7 +138,9 @@ public final class EvaluatedArgumentsVisitor extends RSyntaxVisitor<Info> {
                         return Info.ANY;
                     }
                 }
-                info.addBefore(accept(arguments[1]));
+                if (arguments.length == 2) {
+                    info.addBefore(accept(arguments[1]));
+                }
                 return info;
             } else if (wellKnownFunctions.contains(symbol)) {
                 Info info = Info.createNew();
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ArithmeticWhiteList.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ArithmeticWhiteList.java
index 23a9f595234ab11c08dfe3c16de287e0003a717a..01d39683e7544b3e00ad15e8207550334b1970f2 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ArithmeticWhiteList.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ArithmeticWhiteList.java
@@ -91,5 +91,7 @@ public class ArithmeticWhiteList {
         WHITELIST.add("c(1i,1i,1i)/(-0.0)", "[1] NaN+NaNi NaN+NaNi NaN+NaNi\n", "[1] NaN-Infi NaN-Infi NaN-Infi\n");
         WHITELIST.add("c(1i,1i,1i)/FALSE", "[1] NaN+NaNi NaN+NaNi NaN+NaNi\n", "[1] NaN+Infi NaN+Infi NaN+Infi\n");
         WHITELIST.add("c(1i,1i,1i)/c(FALSE,FALSE,FALSE)", "[1] NaN+NaNi NaN+NaNi NaN+NaNi\n", "[1] NaN+Infi NaN+Infi NaN+Infi\n");
+        WHITELIST.add("{ as.raw(c(1,4)) | raw() }", "raw(0)\n", "logical(0)\n");
+        WHITELIST.add("{ raw() | as.raw(c(1,4))}", "raw(0)\n", "logical(0)\n");
     }
 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
index 99173c702c2c216ea4d19679f0371b9f2309f6dd..fa3a468fa0f357f2df8281a4ae092569ecf9177c 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
@@ -81240,7 +81240,7 @@ Error in as.raw(1) || 1 : invalid 'x' type in 'x || y'
 #{ as.raw(10) && "hi" }
 Error in as.raw(10) && "hi" : invalid 'x' type in 'x && y'
 
-##com.oracle.truffle.r.test.library.base.TestSimpleArithmetic.testNonvectorizedLogicalSpecialChecks#
+##com.oracle.truffle.r.test.library.base.TestSimpleArithmetic.testNonvectorizedLogicalSpecialChecks#WhiteList.arithmetic#
 #{ as.raw(c(1,4)) | raw() }
 logical(0)
 
@@ -81292,7 +81292,7 @@ logical(0)
 #{ logical(0) || logical(0) }
 [1] NA
 
-##com.oracle.truffle.r.test.library.base.TestSimpleArithmetic.testNonvectorizedLogicalSpecialChecks#
+##com.oracle.truffle.r.test.library.base.TestSimpleArithmetic.testNonvectorizedLogicalSpecialChecks#WhiteList.arithmetic#
 #{ raw() | as.raw(c(1,4))}
 logical(0)
 
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleArithmetic.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleArithmetic.java
index 52bcbd515d643c10eb76cfcc36980d3687c64c5f..cda5165d8c9b655a17e7132eca2959e9dc3f981d 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleArithmetic.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/base/TestSimpleArithmetic.java
@@ -602,8 +602,8 @@ public class TestSimpleArithmetic extends TestBase {
         assertEval("{ as.raw(10) && \"hi\" }");
         assertEval("{ c(TRUE,FALSE) | logical() }");
         assertEval("{ logical() | c(TRUE,FALSE) }");
-        assertEval("{ as.raw(c(1,4)) | raw() }");
-        assertEval("{ raw() | as.raw(c(1,4))}");
+        assertEval(ArithmeticWhiteList.WHITELIST, "{ as.raw(c(1,4)) | raw() }");
+        assertEval(ArithmeticWhiteList.WHITELIST, "{ raw() | as.raw(c(1,4))}");
         assertEval("{ logical(0) || logical(0) }");
         assertEval("{ logical(0) || TRUE }");
         assertEval("{ logical(0) || FALSE }");