diff --git a/src/main/java/com/android/tools/r8/StringConsumer.java b/src/main/java/com/android/tools/r8/StringConsumer.java
index 8dacc57..1920d6d 100644
--- a/src/main/java/com/android/tools/r8/StringConsumer.java
+++ b/src/main/java/com/android/tools/r8/StringConsumer.java
@@ -7,6 +7,7 @@
 import com.android.tools.r8.origin.PathOrigin;
 import com.android.tools.r8.utils.ExceptionDiagnostic;
 import java.io.BufferedWriter;
+import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
@@ -101,6 +102,10 @@
     public void accept(String string, DiagnosticsHandler handler) {
       super.accept(string, handler);
       try {
+        File parent = outputPath.getParent().toFile();
+        if (!parent.exists()) {
+          parent.mkdirs();
+        }
         Files.write(outputPath, string.getBytes(encoding));
       } catch (IOException e) {
         Origin origin = new PathOrigin(outputPath);
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 77954fd..959fa7c 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
 
   // This field is accessed from release scripts using simple pattern matching.
   // Therefore, changing this field could break our release scripts.
-  public static final String LABEL = "1.3.36";
+  public static final String LABEL = "1.3.37";
 
   private Version() {
   }
diff --git a/src/test/java/com/android/tools/r8/proguard/printmapping/PrintMappingTest.java b/src/test/java/com/android/tools/r8/proguard/printmapping/PrintMappingTest.java
new file mode 100644
index 0000000..e9bf581
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/proguard/printmapping/PrintMappingTest.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.proguard.printmapping;
+
+import static org.junit.Assert.assertTrue;
+
+import com.android.tools.r8.TestBase;
+import java.nio.file.Path;
+import org.junit.Test;
+
+public class PrintMappingTest extends TestBase {
+
+  @Test
+  public void testWithExistingDirectory() throws Exception {
+    Path mapping = temp.getRoot().toPath().resolve("existing/directory/mapping.txt");
+    mapping.getParent().toFile().mkdirs();
+    test(mapping);
+  }
+
+  @Test
+  public void testWithNonExistingDirectory() throws Exception {
+    test(temp.getRoot().toPath().resolve("not/a/directory/mapping.txt"));
+  }
+
+  private void test(Path mapping) throws Exception {
+    testForR8(Backend.DEX)
+        .addInnerClasses(PrintMappingTest.class)
+        .addKeepMainRule(TestClass.class)
+        .addKeepRules("-printmapping " + mapping)
+        .compile();
+    assertTrue(mapping.toFile().exists());
+  }
+
+  static class TestClass {
+
+    public static void main(String[] args) {}
+  }
+}
