summaryrefslogtreecommitdiff
path: root/compiler/optimizing/code_generator.cc
diff options
context:
space:
mode:
author Santiago Aboy Solanes <solanes@google.com> 2023-04-03 12:34:45 +0100
committer Santiago Aboy Solanes <solanes@google.com> 2023-04-04 12:31:27 +0000
commit76d519b039fcdebf58e05dd42df4dc6cc08251e5 (patch)
tree9ab4e5e9c6cd0be1c90e6aef425f84e7a90dd960 /compiler/optimizing/code_generator.cc
parentedf865bdfba5cd48726b8b668baf2be19a285025 (diff)
Inline unimplemented intrinsics
There are intrinsics that are unimplemented i.e. we didn't hand-craft code for them. Allow the inliner to inline those. Since our optimizations expect InvokeVirtual, I stopped the de-virtualization of intrinsics. That could be re-added if we modify optimizations like TryReplaceStringBuilderAppend. Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b Test: art/test/testrunner/testrunner.py --target --64 --optimizing Test: compiling the APK in the bug and seeing the inline Bug: 262585898 Fixes: 262585898 Change-Id: I501b69c4ffd9082ca8ffacb1cd1cd5d1ab3668a8
Diffstat (limited to 'compiler/optimizing/code_generator.cc')
-rw-r--r--compiler/optimizing/code_generator.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc
index c1bc32aa1e..c9f42b52f5 100644
--- a/compiler/optimizing/code_generator.cc
+++ b/compiler/optimizing/code_generator.cc
@@ -1055,7 +1055,8 @@ CodeGenerator::CodeGenerator(HGraph* graph,
uint32_t core_callee_save_mask,
uint32_t fpu_callee_save_mask,
const CompilerOptions& compiler_options,
- OptimizingCompilerStats* stats)
+ OptimizingCompilerStats* stats,
+ const art::ArrayRef<const bool>& unimplemented_intrinsics)
: frame_size_(0),
core_spill_mask_(0),
fpu_spill_mask_(0),
@@ -1080,7 +1081,8 @@ CodeGenerator::CodeGenerator(HGraph* graph,
is_leaf_(true),
needs_suspend_check_entry_(false),
requires_current_method_(false),
- code_generation_data_() {
+ code_generation_data_(),
+ unimplemented_intrinsics_(unimplemented_intrinsics) {
if (GetGraph()->IsCompilingOsr()) {
// Make OSR methods have all registers spilled, this simplifies the logic of
// jumping to the compiled code directly.