[ARM] Constant pools need 4-byte alignment if we only have tADR
authorJohn Brawn <john.brawn@arm.com>
Thu, 1 Sep 2022 14:58:24 +0000 (15:58 +0100)
committerJohn Brawn <john.brawn@arm.com>
Tue, 6 Sep 2022 10:36:12 +0000 (11:36 +0100)
commite26cadcc32a2194610963bfe140795e978349ba2
tree65c93e5e9ffab7347f825f2ea84ac38fa802b917
parent0f2ec35691cd616644497f9802eea2dd0f03323a
[ARM] Constant pools need 4-byte alignment if we only have tADR

When the only ADR instruction we have is the 16-bit thumb one then all
constant pool entries need to be 4-byte aligned, as tADR has an offset
that's a multiple of 4.

It looks like previously there happened to be no situations in which
we encountered a constant pool entry with alignment less than 4, so
failing to do this didn't cause any problems, but the expansion of
cttz to a table added by D128911 does use a constant pool with
alignment 1, so we now need to handle it correctly.

Differential Revision: https://reviews.llvm.org/D133199
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/ARM/cttz.ll