Don't ignore R8 warnings for optimized targets

Ideally we'd stop ignoring warnings entirely, but this helps de-risk
optimized targets that may be more sensitive to side effects from
suppressing such warnings.

Test: m
Bug: 215530220
Change-Id: Iccd124a347d55cd8f9474ebca7e41eca27882066
diff --git a/java/dex.go b/java/dex.go
index b6fe109..6b7a7f0 100644
--- a/java/dex.go
+++ b/java/dex.go
@@ -43,7 +43,8 @@
 		// True if the module containing this has it set by default.
 		EnabledByDefault bool `blueprint:"mutated"`
 
-		// Whether to continue building even if warnings are emitted.  Defaults to true.
+		// Whether to continue building even if warnings are emitted.  Defaults to true unless bytecode
+		// optimizations are enabled, in which case warnings are not ignored for safety.
 		Ignore_warnings *bool
 
 		// If true, runs R8 in Proguard compatibility mode (default).
@@ -339,8 +340,9 @@
 	}
 
 	// TODO(b/180878971): missing classes should be added to the relevant builds.
-	// TODO(b/229727645): do not use true as default for Android platform builds.
-	if proptools.BoolDefault(opt.Ignore_warnings, true) {
+	// TODO(b/229727645): do not use true as default for unoptimized platform targets.
+	ignoreWarningsDefault := !Bool(opt.Optimize)
+	if proptools.BoolDefault(opt.Ignore_warnings, ignoreWarningsDefault) {
 		r8Flags = append(r8Flags, "-ignorewarnings")
 	}