diff --git a/Cython/Compiler/Optimize.py b/Cython/Compiler/Optimize.py
index b73e115de2bb42a6bcf1587ef5c18aaea2fe2950..1b4e41b4d93263a66eecffbaa7c930b0d65b4066 100644
--- a/Cython/Compiler/Optimize.py
+++ b/Cython/Compiler/Optimize.py
@@ -3969,6 +3969,9 @@ class ConstantFolding(Visitor.VisitorTransform, SkipDeclarations):
             node = ExprNodes.UnicodeNode(node.pos, value=EncodedString(''))
         elif len(values) == 1:
             node = values[0]
+        elif len(values) == 2:
+            # reduce to string concatenation
+            node = ExprNodes.binop_node(node.pos, '+', *values)
         else:
             node.values = values
         return node