Commit
2a5b576e3ea41c30537435d989a3dce7a409f8e2
by david.green[ARM] Test for aligned blocks. NFC
|
 | llvm/test/CodeGen/Thumb2/aligned-nonfallthrough.ll |
Commit
145472421535c71a9ea60af7e5d012ab69dc85ff
by david.green[ARM] Align blocks that are not fallthough targets
If the previous block in a function does not fallthough, adding nop's to align it will never be executed. This means we can freely (except for codesize) align more branches. This happens in constantislandspass (as it cannot happen later) and only happens at aggressive optimization levels as it does increase codesize.
Differential Revision: https://reviews.llvm.org/D94394
|
 | llvm/test/CodeGen/Thumb2/aligned-nonfallthrough.ll |
 | llvm/test/CodeGen/ARM/ParallelDSP/multi-use-loads.ll |
 | llvm/lib/Target/ARM/ARMConstantIslandPass.cpp |
Commit
32fc32317a31fc00e7e4086d6c93dd1eab75960c
by lebedev.ri[SimplifyCFG] markAliveBlocks(): catchswitch: preserve PostDomTree
When removing catchpad's from catchswitch, if that removes a successor, we need to record that in DomTreeUpdater.
This fixes PostDomTree preservation failure in an existing test. This appears to be the single issue that i see in my current test coverage.
|
 | llvm/lib/Transforms/Utils/Local.cpp |
Commit
5238e7b302ffc40707677960da9d64e872745dac
by nikita.ppv[InstCombine] Replace one-use select operand based on condition
InstCombine already performs a fold where X == Y ? f(X) : Z is transformed to X == Y ? f(Y) : Z if f(Y) simplifies. However, if f(X) only has one use, then we can always directly replace the use inside the instruction. To actually be profitable, limit it to the case where Y is a non-expr constant.
This could be further extended to replace uses further up a one-use instruction chain, but for now this only looks one level up.
Among other things, this also subsumes D94860.
Differential Revision: https://reviews.llvm.org/D94862
|
 | llvm/test/Transforms/InstCombine/select-binop-cmp.ll |
 | llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp |
 | llvm/test/Transforms/InstCombine/select-safe-transforms.ll |
Commit
a048ce13e32daa255d26533c00da8abd0b67e819
by i[X86] Default to -x86-pad-for-align=false to drop assembler difference with or w/o -g
Fix PR48742: the D75203 assembler optimization locates MCRelaxableFragment's within two MCSymbol's and relaxes some MCRelaxableFragment's to reduce the size of a MCAlignFragment. A -g build has more MCSymbol's and therefore may have different assembler output (e.g. a MCRelaxableFragment (jmp) may have 5 bytes with -O1 while 2 bytes with -O1 -g).
`.p2align 4, 0x90` is common due to loops. For a larger program, with a lot of temporary labels, the assembly output difference is somewhat destined. The cost seems to overweigh the benefits so we default to -x86-pad-for-align=false until the heuristic is improved.
Reviewed By: skan
Differential Revision: https://reviews.llvm.org/D94542
|
 | llvm/test/MC/X86/prefix-padding-32.s |
 | llvm/test/MC/X86/align-via-padding.s |
 | llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp |
 | llvm/test/MC/X86/align-via-padding-corner.s |
 | llvm/test/MC/X86/align-via-relaxation.s |
 | llvm/test/MC/X86/prefix-padding-64.s |