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
This commit is contained in:
Pirama Arumuga Nainar 2017-10-16 13:31:40 -07:00
parent 0fdfc459cf
commit 6aeed8b439
1 changed files with 10 additions and 4 deletions

View File

@ -37,10 +37,11 @@ const profileUseSamplingFormat = "-fprofile-sample-use=%s"
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) profileUseFlags(ctx ModuleContext, file string) []st
}
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() {