3 Commits

Author SHA1 Message Date
Krzysztof Parzyszek
0b5d0cfa8e [Hexagon] Simplify CFG after atomic expansion
This will remove suboptimal branching from the generated ll/sc loops.
The extra simplification pass affects a lot of testcases, which have
been modified to accommodate this change: either by modifying the
test to become immune to the CFG simplification, or (less preferablt)
by adding option -hexagon-initial-cfg-clenaup=0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338774 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 22:17:53 +00:00
Krzysztof Parzyszek
216bd9526a Revert: [Hexagon] Make sure that offset on globals matches alignment requirements
This reverts r323562, since it wasn't actually necessary. Constant-
extended offsets do not need to be aligned, as long as the effective
address is aligned.

Keep the testcase, with a modification which checks that such offsets
are not unnecessarily avoided.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@323798 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-30 18:10:27 +00:00
Krzysztof Parzyszek
b810cf80d5 [Hexagon] Make sure that offset on globals matches alignment requirements
A correctly aligned address may happen to be separated into a variable
part and a constant part, where the constant part does not match the
alignment needed in a load/store that uses this address. Such a constant
cannot be used as an immediate offset in an indexed instruction.

When lowering a global address, make sure that if there is an offset
folded into the global, the offset is valid for all uses in load/store
instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@323562 91177308-0d34-0410-b5e6-96231b3b80d8
2018-01-26 21:20:04 +00:00