diff --git a/.gitignore b/.gitignore
index 147cf9a..26634e8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 
+!third_party/chrome/*.sha1
 !third_party/gmail/*.sha1
 !third_party/gmscore/*.sha1
 !third_party/internal/*.sha1
@@ -30,6 +31,8 @@
 tests/2017-10-04/art.tar.gz
 third_party/android_cts_baseline
 third_party/android_cts_baseline.tar.gz
+third_party/clank/clank_google3_prebuilt
+third_party/clank/clank_google3.tar.gz
 third_party/android_jar/lib
 third_party/android_jar/lib-v[0-9][0-9]
 third_party/android_jar/lib-v[0-9][0-9].tar.gz
diff --git a/build.gradle b/build.gradle
index d7c83e7..121279f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -420,6 +420,7 @@
         "chrome/chrome_180917_ffbaa8",
         "chrome/chrome_200430",
         "chrome/monochrome_public_minimal_apks/chrome_200520",
+        "chrome/clank_google3_prebuilt",
         "classlib",
         "cf_segments",
         "desugar/desugar_20180308",
diff --git a/src/test/java/com/android/tools/r8/internal/ClankDepsTest.java b/src/test/java/com/android/tools/r8/internal/ClankDepsTest.java
new file mode 100644
index 0000000..3d16eee
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/internal/ClankDepsTest.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2019, 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.internal;
+
+import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage;
+import static org.hamcrest.CoreMatchers.containsString;
+
+import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.utils.AndroidApiLevel;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class ClankDepsTest extends TestBase {
+
+  @Parameters(name = "{0}")
+  public static TestParametersCollection data() {
+    return getTestParameters().withNoneRuntime().build();
+  }
+
+  public ClankDepsTest(TestParameters parameters) {
+    parameters.assertNoneRuntime();
+  }
+
+  private static final Path DIR = Paths.get("third_party", "chrome", "clank_google3_prebuilt");
+  private static final Path CLASSES = DIR.resolve("classes.jar");
+  private static final Path CONFIG = DIR.resolve("proguard.txt");
+
+  @Test(expected = AssertionError.class)
+  public void test() throws Exception {
+    testForR8(Backend.DEX)
+        .addProgramFiles(CLASSES)
+        .addKeepRuleFiles(CONFIG)
+        .addDontWarn("androidx.**")
+        .addDontWarnJavax()
+        .addDontWarn("dalvik.system.VMStack")
+        .addDontWarn("zzz.com.facebook.litho.R$id")
+        .addDontWarn("com.google.android.libraries.elements.R$id")
+        .allowUnusedProguardConfigurationRules()
+        .setMinApi(AndroidApiLevel.N)
+        .compileWithExpectedDiagnostics(
+            diagnostics ->
+                diagnostics.assertErrorsMatch(
+                    diagnosticMessage(
+                        containsString("java.lang.AssertionError: Invalid read to $VALUES"))));
+  }
+}
diff --git a/third_party/chrome/clank_google3_prebuilt.tar.gz.sha1 b/third_party/chrome/clank_google3_prebuilt.tar.gz.sha1
new file mode 100644
index 0000000..862139a
--- /dev/null
+++ b/third_party/chrome/clank_google3_prebuilt.tar.gz.sha1
@@ -0,0 +1 @@
+4af48dbfdd1333bb41c716a62a136dfd1fa2354d
\ No newline at end of file
