Add enable_profile_use property

Bug: http://b/65598278

This property defaults to 'true' and setting it to false skips profile
use.  This escape hatch lets us disable PGO for a module without
completely removing the 'pgo' property.  Additionally, this also helps
selectively disabling PGO for some architectures, if desired.

Test: Test that -fprofile-use is not added for a test module if
'enable_profile_use: false' is set.

Change-Id: Ifcf1a48c194bc86efd88a529cc2d66a47b7ab080
diff --git a/cc/pgo.go b/cc/pgo.go
index c5e4e86..ea23124 100644
--- a/cc/pgo.go
+++ b/cc/pgo.go
@@ -37,10 +37,11 @@
 
 type PgoProperties struct {
 	Pgo struct {
-		Instrumentation *bool
-		Sampling        *bool
-		Profile_file    *string `android:"arch_variant"`
-		Benchmarks      []string
+		Instrumentation    *bool
+		Sampling           *bool
+		Profile_file       *string `android:"arch_variant"`
+		Benchmarks         []string
+		Enable_profile_use *bool `android:"arch_variant"`
 	} `android:"arch_variant"`
 
 	PgoPresent          bool `blueprint:"mutated"`
@@ -95,6 +96,11 @@
 }
 
 func (props *PgoProperties) addProfileUseFlags(ctx ModuleContext, flags Flags) Flags {
+	// Skip -fprofile-use if 'enable_profile_use' property is set
+	if props.Pgo.Enable_profile_use != nil && *props.Pgo.Enable_profile_use == false {
+		return flags
+	}
+
 	// If the PGO profiles project is found, and this module has PGO
 	// enabled, add flags to use the profile
 	if profilesDir := getPgoProfilesDir(ctx); props.PgoPresent && profilesDir.Valid() {