Switch clang to r353983

Bug: 126457671
Bug: 123638879
Bug: 128878287
Test: go/clang-r353983-testing
Change-Id: I7f16e68f0f521ff55587084932d175b704e452c9
diff --git a/cc/config/clang.go b/cc/config/clang.go
index 6a1c736..a57bbf8 100644
--- a/cc/config/clang.go
+++ b/cc/config/clang.go
@@ -174,6 +174,10 @@
 
 		// Disable this warning because we don't care about behavior with older compilers.
 		"-Wno-return-std-move-in-c++11",
+
+		// Disable -Wstring-plus-int until the instances detected by this new warning is
+		// fixed.
+		"-Wno-string-plus-int",
 	}, " "))
 
 	// Extra cflags for projects under external/ directory
diff --git a/cc/config/global.go b/cc/config/global.go
index 689b315..e3fab0c 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -120,8 +120,8 @@
 
 	// prebuilts/clang default settings.
 	ClangDefaultBase         = "prebuilts/clang/host"
-	ClangDefaultVersion      = "clang-r349610"
-	ClangDefaultShortVersion = "8.0.8"
+	ClangDefaultVersion      = "clang-r353983"
+	ClangDefaultShortVersion = "9.0.1"
 
 	// Directories with warnings from Android.bp files.
 	WarningAllowedProjects = []string{
diff --git a/cc/lto.go b/cc/lto.go
index 6302748..0d7a246 100644
--- a/cc/lto.go
+++ b/cc/lto.go
@@ -83,8 +83,7 @@
 	if lto.LTO() {
 		var ltoFlag string
 		if Bool(lto.Properties.Lto.Thin) {
-			ltoFlag = "-flto=thin"
-
+			ltoFlag = "-flto=thin -fsplit-lto-unit"
 		} else {
 			ltoFlag = "-flto"
 		}