Optimize sanitizerRuntimeDepsMutator
sanitizerRuntimeDepsMutator only modifies the currently visited module, it can visit modules in parallel. Also, stop recursing into modules that are not static dependencies, and stop recursing if the module already has all modifications that the mutator could make. Test: m checkbuild Change-Id: I95a57f763a91940f1854ba3c587a2f70e8baba97
This commit is contained in:
parent
643614de24
commit
0b90833ea8
2
cc/cc.go
2
cc/cc.go
|
@ -65,7 +65,7 @@ func init() {
|
|||
ctx.TopDown("tsan_deps", sanitizerDepsMutator(tsan))
|
||||
ctx.BottomUp("tsan", sanitizerMutator(tsan)).Parallel()
|
||||
|
||||
ctx.TopDown("sanitize_runtime_deps", sanitizerRuntimeDepsMutator)
|
||||
ctx.TopDown("sanitize_runtime_deps", sanitizerRuntimeDepsMutator).Parallel()
|
||||
ctx.BottomUp("sanitize_runtime", sanitizerRuntimeMutator).Parallel()
|
||||
|
||||
ctx.BottomUp("coverage", coverageMutator).Parallel()
|
||||
|
|
|
@ -701,8 +701,8 @@ func sanitizerRuntimeDepsMutator(mctx android.TopDownMutatorContext) {
|
|||
if !isSanitizableDependencyTag(mctx.OtherModuleDependencyTag(child)) {
|
||||
return false
|
||||
}
|
||||
if d, ok := child.(*Module); ok && d.static() && d.sanitize != nil {
|
||||
|
||||
if d, ok := child.(*Module); ok && d.static() && d.sanitize != nil {
|
||||
if enableMinimalRuntime(d.sanitize) {
|
||||
// If a static dependency is built with the minimal runtime,
|
||||
// make sure we include the ubsan minimal runtime.
|
||||
|
@ -713,8 +713,17 @@ func sanitizerRuntimeDepsMutator(mctx android.TopDownMutatorContext) {
|
|||
// make sure we include the ubsan runtime.
|
||||
c.sanitize.Properties.UbsanRuntimeDep = true
|
||||
}
|
||||
|
||||
if c.sanitize.Properties.MinimalRuntimeDep &&
|
||||
c.sanitize.Properties.UbsanRuntimeDep {
|
||||
// both flags that this mutator might set are true, so don't bother recursing
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue