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() {