Add new combiner to split the address arithmetic into a new base and a
new offset, So that the offset fit into the load/store operation.
The split algorithm references the implementation from dart's
CanHold function in assembler_arm64.h
Note GCC has a mechanism to legitimize address: target
hook legitimize_address.
Details
Details
- Reviewers
t.p.northover craig.topper
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Unit Tests
Event Timeline
Comment Actions
The "Address" operand supports more than one use.
Add LoadThenStore test case to test the situation above.
Comment Actions
Fix the unpassed tests.
Only split the constant when it would cause the one more move instruction.
clang-tidy: warning: invalid case style for function 'InRange' [readability-identifier-naming]
not useful
clang-tidy: warning: invalid case style for parameter 'value' [readability-identifier-naming]
not useful
clang-tidy: warning: invalid case style for parameter 'lower' [readability-identifier-naming]
not useful
clang-tidy: warning: invalid case style for parameter 'upper' [readability-identifier-naming]
not useful