Eli Friedman c9c930ae67 [SelectionDAG] Don't promote the alignment of allocas beyond the stack alignment.
allocas in LLVM IR have a specified alignment. When that alignment is
specified, the alloca has at least that alignment at runtime.

If the specified type of the alloca has a higher preferred alignment,
SelectionDAG currently ignores that specified alignment, and increases
the alignment. It does this even if it would trigger stack realignment.
I don't think this makes sense, so this patch changes that.

I was looking into this for SVE in particular: for SVE, overaligning
vscale'ed types is extra expensive because it requires realigning the
stack multiple times, or using dynamic allocation. (This currently isn't
implemented.)

I updated the expected assembly for a couple tests; in particular, for
arg-copy-elide.ll, the optimization in question does not increase the
alignment the way SelectionDAG normally would. For the rest, I just
increased the specified alignment on the allocas to match what
SelectionDAG was inferring.

Differential Revision: https://reviews.llvm.org/D79532
2020-05-11 17:39:00 -07:00
..
2019-05-15 12:41:58 +00:00
2020-01-07 16:51:11 +00:00
2019-08-01 11:12:10 +00:00
2020-02-24 14:19:21 +00:00
2018-10-14 16:49:04 +00:00
2018-07-04 13:28:39 +00:00
2019-10-08 08:25:42 +00:00
2020-04-09 10:36:00 +01:00
2019-01-07 12:21:13 +00:00
2019-02-26 12:02:12 +00:00
2019-12-12 13:51:39 +00:00
2019-06-11 11:09:25 +00:00
2018-09-26 10:56:00 +00:00
2020-03-31 10:11:36 +01:00
2019-04-17 16:51:09 +00:00
2019-10-08 16:16:26 +00:00
2019-07-29 09:48:07 +00:00
2020-02-20 13:54:43 +00:00
2020-01-21 10:40:17 +00:00
2019-07-27 18:44:15 +00:00
2019-10-08 08:25:42 +00:00
2019-11-04 13:37:01 +00:00
2019-10-08 08:25:42 +00:00