diff --git a/Android.bp b/Android.bp
index ce00396..8e7b887 100644
--- a/Android.bp
+++ b/Android.bp
@@ -14,6 +14,39 @@
 // limitations under the License.
 //
 
+package {
+    default_applicable_licenses: ["frameworks_compile_slang_license"],
+}
+
+// Added automatically by a large-scale-change that took the approach of
+// 'apply every license found to every target'. While this makes sure we respect
+// every license restriction, it may not be entirely correct.
+//
+// e.g. GPL in an MIT project might only apply to the contrib/ directory.
+//
+// Please consider splitting the single license below into multiple licenses,
+// taking care not to lose any license_kind information, and overriding the
+// default license using the 'licenses: [...]' property on targets as needed.
+//
+// For unused files, consider creating a 'fileGroup' with "//visibility:private"
+// to attach the license to, and including a comment whether the files may be
+// used in the current project.
+// See: http://go/android-license-faq
+license {
+    name: "frameworks_compile_slang_license",
+    visibility: [":__subpackages__"],
+    license_kinds: [
+        "SPDX-license-identifier-Apache-2.0",
+        "SPDX-license-identifier-BSD",
+        "SPDX-license-identifier-MIT",
+        "SPDX-license-identifier-NCSA",
+        "legacy_unencumbered",
+    ],
+    license_text: [
+        "NOTICE",
+    ],
+}
+
 cc_defaults {
     name: "rs-version",
     cflags: [
@@ -103,12 +136,6 @@
     ],
 
     shared_libs: ["libbcinfo"],
-
-    product_variables: {
-        unbundled_build: {
-            enabled: false,
-        },
-    },
 }
 
 // ========================================================
@@ -188,12 +215,6 @@
             ],
         },
     },
-
-    product_variables: {
-        unbundled_build: {
-            enabled: false,
-        },
-    },
 }
 
 cc_binary_host {
diff --git a/BitWriter_2_9/Android.bp b/BitWriter_2_9/Android.bp
index 4a6bd28..e47a0d6 100644
--- a/BitWriter_2_9/Android.bp
+++ b/BitWriter_2_9/Android.bp
@@ -1,5 +1,14 @@
 // For the host
 // =====================================================
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "frameworks_compile_slang_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-NCSA
+    default_applicable_licenses: ["frameworks_compile_slang_license"],
+}
+
 cc_library_host_static {
     name: "libLLVMBitWriter_2_9",
     defaults: ["slang-defaults"],
diff --git a/BitWriter_2_9/BitcodeWriter.cpp b/BitWriter_2_9/BitcodeWriter.cpp
index caee7de..8942e47 100644
--- a/BitWriter_2_9/BitcodeWriter.cpp
+++ b/BitWriter_2_9/BitcodeWriter.cpp
@@ -1698,7 +1698,7 @@
   WriteInt32ToBuffer(BCSize     , Buffer, Position);
   WriteInt32ToBuffer(CPUType    , Buffer, Position);
 
-  // If the file is not a multiple of 16 bytes, insert dummy padding.
+  // If the file is not a multiple of 16 bytes, insert placeholder padding.
   while (Buffer.size() & 15)
     Buffer.push_back(0);
 }
diff --git a/BitWriter_2_9/ValueEnumerator.cpp b/BitWriter_2_9/ValueEnumerator.cpp
index dedbedd..8d6475c 100644
--- a/BitWriter_2_9/ValueEnumerator.cpp
+++ b/BitWriter_2_9/ValueEnumerator.cpp
@@ -263,7 +263,7 @@
       (isa<MDNode>(MD) || isa<MDString>(MD) || isa<ConstantAsMetadata>(MD)) &&
       "Invalid metadata kind");
 
-  // Insert a dummy ID to block the co-recursive call to
+  // Insert a placeholder ID to block the co-recursive call to
   // EnumerateMDNodeOperands() from re-visiting MD in a cyclic graph.
   //
   // Return early if there's already an ID.
@@ -279,7 +279,7 @@
   HasMDString |= isa<MDString>(MD);
   HasDILocation |= isa<DILocation>(MD);
 
-  // Replace the dummy ID inserted above with the correct one.  MDValueMap may
+  // Replace the placeholder ID inserted above with the correct one.  MDValueMap may
   // have changed by inserting operands, so we need a fresh lookup here.
   MDs.push_back(MD);
   MDValueMap[MD] = MDs.size();
diff --git a/BitWriter_2_9_func/Android.bp b/BitWriter_2_9_func/Android.bp
index b14d3e6..b4b7c47 100644
--- a/BitWriter_2_9_func/Android.bp
+++ b/BitWriter_2_9_func/Android.bp
@@ -1,5 +1,14 @@
 // For the host
 // =====================================================
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "frameworks_compile_slang_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-NCSA
+    default_applicable_licenses: ["frameworks_compile_slang_license"],
+}
+
 cc_library_host_static {
     name: "libLLVMBitWriter_2_9_func",
     defaults: ["slang-defaults"],
diff --git a/BitWriter_2_9_func/BitcodeWriter.cpp b/BitWriter_2_9_func/BitcodeWriter.cpp
index 3ed3380..30b8e7d 100644
--- a/BitWriter_2_9_func/BitcodeWriter.cpp
+++ b/BitWriter_2_9_func/BitcodeWriter.cpp
@@ -1762,7 +1762,7 @@
   WriteInt32ToBuffer(BCSize     , Buffer, Position);
   WriteInt32ToBuffer(CPUType    , Buffer, Position);
 
-  // If the file is not a multiple of 16 bytes, insert dummy padding.
+  // If the file is not a multiple of 16 bytes, insert placeholder padding.
   while (Buffer.size() & 15)
     Buffer.push_back(0);
 }
diff --git a/BitWriter_2_9_func/ValueEnumerator.cpp b/BitWriter_2_9_func/ValueEnumerator.cpp
index ce785da..0690af7 100644
--- a/BitWriter_2_9_func/ValueEnumerator.cpp
+++ b/BitWriter_2_9_func/ValueEnumerator.cpp
@@ -263,7 +263,7 @@
       (isa<MDNode>(MD) || isa<MDString>(MD) || isa<ConstantAsMetadata>(MD)) &&
       "Invalid metadata kind");
 
-  // Insert a dummy ID to block the co-recursive call to
+  // Insert a placeholder ID to block the co-recursive call to
   // EnumerateMDNodeOperands() from re-visiting MD in a cyclic graph.
   //
   // Return early if there's already an ID.
@@ -279,7 +279,7 @@
   HasMDString |= isa<MDString>(MD);
   HasDILocation |= isa<DILocation>(MD);
 
-  // Replace the dummy ID inserted above with the correct one.  MDValueMap may
+  // Replace the placeholder ID inserted above with the correct one.  MDValueMap may
   // have changed by inserting operands, so we need a fresh lookup here.
   MDs.push_back(MD);
   MDValueMap[MD] = MDs.size();
diff --git a/BitWriter_3_2/Android.bp b/BitWriter_3_2/Android.bp
index 89282cc..f87a2fa 100644
--- a/BitWriter_3_2/Android.bp
+++ b/BitWriter_3_2/Android.bp
@@ -1,5 +1,14 @@
 // For the host and device
 // =====================================================
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "frameworks_compile_slang_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-NCSA
+    default_applicable_licenses: ["frameworks_compile_slang_license"],
+}
+
 cc_library_static {
     name: "libLLVMBitWriter_3_2",
     vendor_available: true,
diff --git a/BitWriter_3_2/BitcodeWriter.cpp b/BitWriter_3_2/BitcodeWriter.cpp
index c57dd45..2099ac0 100644
--- a/BitWriter_3_2/BitcodeWriter.cpp
+++ b/BitWriter_3_2/BitcodeWriter.cpp
@@ -1836,7 +1836,7 @@
   WriteInt32ToBuffer(BCSize     , Buffer, Position);
   WriteInt32ToBuffer(CPUType    , Buffer, Position);
 
-  // If the file is not a multiple of 16 bytes, insert dummy padding.
+  // If the file is not a multiple of 16 bytes, insert placeholder padding.
   while (Buffer.size() & 15)
     Buffer.push_back(0);
 }
diff --git a/BitWriter_3_2/ValueEnumerator.cpp b/BitWriter_3_2/ValueEnumerator.cpp
index 4ce2ec6..9d74d75 100644
--- a/BitWriter_3_2/ValueEnumerator.cpp
+++ b/BitWriter_3_2/ValueEnumerator.cpp
@@ -263,7 +263,7 @@
       (isa<MDNode>(MD) || isa<MDString>(MD) || isa<ConstantAsMetadata>(MD)) &&
       "Invalid metadata kind");
 
-  // Insert a dummy ID to block the co-recursive call to
+  // Insert a placeholder ID to block the co-recursive call to
   // EnumerateMDNodeOperands() from re-visiting MD in a cyclic graph.
   //
   // Return early if there's already an ID.
@@ -279,7 +279,7 @@
   HasMDString |= isa<MDString>(MD);
   HasDILocation |= isa<DILocation>(MD);
 
-  // Replace the dummy ID inserted above with the correct one.  MDValueMap may
+  // Replace the placeholder ID inserted above with the correct one.  MDValueMap may
   // have changed by inserting operands, so we need a fresh lookup here.
   MDs.push_back(MD);
   MDValueMap[MD] = MDs.size();
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..d97975c
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,3 @@
+third_party {
+  license_type: NOTICE
+}
diff --git a/StripUnkAttr/Android.bp b/StripUnkAttr/Android.bp
index d7082a7..6dcdbcc 100644
--- a/StripUnkAttr/Android.bp
+++ b/StripUnkAttr/Android.bp
@@ -1,5 +1,14 @@
 // For the host and device
 // =====================================================
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "frameworks_compile_slang_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["frameworks_compile_slang_license"],
+}
+
 cc_library_static {
     name: "libStripUnkAttr",
     vendor_available: true,
diff --git a/llvm-rs-cc.cpp b/llvm-rs-cc.cpp
index a51e672..0c1143d 100644
--- a/llvm-rs-cc.cpp
+++ b/llvm-rs-cc.cpp
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+#include "clang/Basic/AllDiagnostics.h"
 #include "clang/Basic/DiagnosticOptions.h"
 #include "clang/Driver/DriverDiagnostic.h"
 #include "clang/Driver/Options.h"
@@ -223,6 +224,14 @@
     return "detect_leaks=0";
 }
 
+static void emitDeprecationWarning(clang::DiagnosticsEngine *DiagEngine) {
+  DiagEngine->Report(clang::diag::warn_deprecated_message)
+      << "Renderscript"
+      << "Please refer to the migration guide "
+         "(https://developer.android.com/guide/topics/renderscript/migration-guide) "
+         "for the proposed alternatives.";
+}
+
 int main(int argc, const char **argv) {
   llvm::llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
   LLVMInitializeARMTargetInfo();
@@ -263,6 +272,7 @@
   (void)DiagEngine.setSeverityForGroup(clang::diag::Flavor::WarningOrError,
                                        "implicit-function-declaration",
                                        clang::diag::Severity::Error);
+  emitDeprecationWarning(&DiagEngine);
 
   // Report error if no input file
   if (Inputs.empty()) {
diff --git a/rs_cc_options.cpp b/rs_cc_options.cpp
index f84294b..89720a3 100644
--- a/rs_cc_options.cpp
+++ b/rs_cc_options.cpp
@@ -133,6 +133,11 @@
   // employ/encourage this extension for zero-initialization of structures.
   DiagOpts.Warnings.push_back("no-gnu-empty-initializer");
 
+  // Always turn deprecation warning into a warning even if -Werror is specified.
+  // This is because we will always emit RenderScript deprecation warning, and turning
+  // it into an error will make the compilation always fail.
+  DiagOpts.Warnings.push_back("no-error=deprecated-declarations");
+
   for (llvm::opt::ArgList::const_iterator it = Args.begin(), ie = Args.end();
        it != ie; ++it) {
     const llvm::opt::Arg *A = *it;
@@ -290,13 +295,11 @@
 
   if (Opts.mTargetAPI == 0) {
     Opts.mTargetAPI = UINT_MAX;
-  } else if (Opts.mTargetAPI == SLANG_N_MR1_TARGET_API ||
-             Opts.mTargetAPI == SLANG_O_TARGET_API ||
-             Opts.mTargetAPI == SLANG_O_MR1_TARGET_API ||
-             Opts.mTargetAPI == SLANG_P_TARGET_API) {
+  } else if (Opts.mTargetAPI > SLANG_MAXIMUM_TARGET_API &&
+             Opts.mTargetAPI <= SLANG_MAXIMUM_CMDLINE_TARGET_API) {
     // Bug: http://b/35767071
-    // No new APIs for N_MR1, O, O_MR1 and P, convert to N.
-    Opts.mTargetAPI = SLANG_N_TARGET_API;
+    // No new APIs after N, convert to N.
+    Opts.mTargetAPI = SLANG_MAXIMUM_TARGET_API;
   }
 
   if ((Opts.mTargetAPI < 21) || (Opts.mBitcodeStorage == BCST_CPP_CODE))
diff --git a/slang_rs_context.cpp b/slang_rs_context.cpp
index b2c3179..ed2c47e 100644
--- a/slang_rs_context.cpp
+++ b/slang_rs_context.cpp
@@ -276,7 +276,7 @@
     }
   }
 
-  // Create a dummy root in slot 0 if a root kernel is not seen
+  // Create a placeholder root in slot 0 if a root kernel is not seen
   // and there exists a non-root kernel.
   if (valid && mExportForEach[0] == nullptr) {
     const size_t numExportedForEach = mExportForEach.size();
@@ -302,7 +302,7 @@
 }
 
 bool RSContext::processReducePragmas(Backend *BE) {
-  // This is needed to ensure that the dummy variable is emitted into
+  // This is needed to ensure that the placeholder variable is emitted into
   // the bitcode -- which in turn forces the function to be emitted
   // into the bitcode.  We couldn't do this at
   // markUsedByReducePragma() time because we had to wait until the
@@ -346,7 +346,7 @@
   // reduce).
   FD->setIsUsed();
 
-  // Each constituent function "f" of a reduction kernel gets a dummy variable generated for it:
+  // Each constituent function "f" of a reduction kernel gets a placeholder variable generated for it:
   //   void *.rs.reduce_fn.f = (void*)&f;
   // This is a trick to ensure that clang will not delete "f" as unused.
 
diff --git a/slang_rs_export_foreach.h b/slang_rs_export_foreach.h
index 4622e24..d5928f5 100644
--- a/slang_rs_export_foreach.h
+++ b/slang_rs_export_foreach.h
@@ -48,7 +48,7 @@
   std::string mName;
 
   // For diagnostic purposes, we record the order in which we parse
-  // foreach kernels.  Does not apply to a dummy root.
+  // foreach kernels.  Does not apply to a placeholder root.
   unsigned mOrdinal;
 
   RSExportRecordType *mParamPacketType;
diff --git a/slang_rs_reflection.cpp b/slang_rs_reflection.cpp
index 2c30e4f..875d84b 100644
--- a/slang_rs_reflection.cpp
+++ b/slang_rs_reflection.cpp
@@ -1005,7 +1005,7 @@
     mState->declareForEachDummyRoot(EF);
 
     if (!mCollecting) {
-      // Skip reflection for dummy root() kernels. Note that we have to
+      // Skip reflection for placeholder root() kernels. Note that we have to
       // advance the next slot number for ForEach, however.
       mOut.indent() << "//private final static int "
                     << RS_EXPORT_FOREACH_INDEX_PREFIX << EF->getName() << " = "
@@ -1498,7 +1498,7 @@
     mOut.indent() << "// " << InComment << "\n";
   startFunction(AM_Public, false, ResultTypeName.c_str(), MethodName, Args);
   const std::string &In0Name = Args[0].second;
-  // Sanity-check inputs
+  // Validity-check inputs
   if (Ins.size() > 1)
     mOut.indent() << "Type t0, t1;\n";
   for (size_t InIdx = 0, InEnd = Ins.size(); InIdx < InEnd; ++InIdx) {
diff --git a/slang_version.h b/slang_version.h
index 7ca6230..e6e47a3 100644
--- a/slang_version.h
+++ b/slang_version.h
@@ -46,7 +46,12 @@
   SLANG_O_TARGET_API = 26,
   SLANG_O_MR1_TARGET_API = 27,
   SLANG_P_TARGET_API = 28,
+  SLANG_Q_TARGET_API = 29,
+  SLANG_R_TARGET_API = 30,
+  SLANG_S_TARGET_API = 31,
   SLANG_MAXIMUM_TARGET_API = RS_VERSION,
+  // The maximum API level that is acceptable for the "-target-api" commandline option.
+  SLANG_MAXIMUM_CMDLINE_TARGET_API = SLANG_S_TARGET_API,
   SLANG_DEVELOPMENT_TARGET_API = RS_DEVELOPMENT_API
 };
 // Note that RS_VERSION is defined at build time (see Android.mk for details).
diff --git a/tests/P_warnings_deprecated/deprecated.rscript b/tests/P_warnings_deprecated/deprecated.rscript
index 4e5f5af..03f0185 100644
--- a/tests/P_warnings_deprecated/deprecated.rscript
+++ b/tests/P_warnings_deprecated/deprecated.rscript
@@ -1,4 +1,4 @@
-// -target-api 22
+// -target-api 22 -Wdeprecated-declarations
 #pragma version(1)
 #pragma rs java_package_name(foo)
 
diff --git a/tests/P_warnings_deprecated/stderr.txt.expect b/tests/P_warnings_deprecated/stderr.txt.expect
index ca4afee..4241202 100644
--- a/tests/P_warnings_deprecated/stderr.txt.expect
+++ b/tests/P_warnings_deprecated/stderr.txt.expect
@@ -1,3 +1,4 @@
+warning: Renderscript is deprecated: Please refer to the migration guide (https://developer.android.com/guide/topics/renderscript/migration-guide) for the proposed alternatives.
 deprecated.rscript:9:9: warning: 'rsClamp' is deprecated: Use clamp() instead.
 ../../../../../frameworks/rs/script_api/include/rs_math.rsh:6482:5: note: 'rsClamp' has been explicitly marked deprecated here
 deprecated.rscript:10:8: warning: 'rsGetAllocation' is deprecated: This function is deprecated and will be removed from the SDK in a future release.
diff --git a/tests/slang_test.py b/tests/slang_test.py
index 82593cc..628ec7f 100755
--- a/tests/slang_test.py
+++ b/tests/slang_test.py
@@ -163,7 +163,7 @@
 
 def CreateCmd():
   """Creates the test command to run for the current test."""
-  cmd_string = ('%s/bin/llvm-rs-cc -o tmp/ -p tmp/ -MD '
+  cmd_string = ('%s/bin/llvm-rs-cc -o tmp/ -p tmp/ -MD -Wno-deprecated-declarations '
                 '-I ../../../../../frameworks/rs/script_api/include/ '
                 '-I ../../../../../external/clang/lib/Headers/') % GetOutDir()
   base_args = cmd_string.split()
