diff options
author | Kito Cheng <kito.cheng@sifive.com> | 2020-04-14 14:53:19 +0800 |
---|---|---|
committer | Kito Cheng <kito.cheng@sifive.com> | 2020-05-20 15:17:48 +0800 |
commit | dfa4fcdba374ed44d4aa1a22b2738f3f5c5b37af (patch) | |
tree | afbbdd4decae7fe2579c968b4b242b54f02a67f1 /gcc/Makefile.in | |
parent | b17a002ef579ed85edbe2c241222bfd0a86682db (diff) | |
download | gcc-dfa4fcdba374ed44d4aa1a22b2738f3f5c5b37af.zip gcc-dfa4fcdba374ed44d4aa1a22b2738f3f5c5b37af.tar.gz gcc-dfa4fcdba374ed44d4aa1a22b2738f3f5c5b37af.tar.bz2 |
Fix alignment for local variable [PR90811]
- The alignment for local variable was adjust during estimate_stack_frame_size,
however it seems wrong spot to adjust that, expand phase will adjust that
but it little too late to some gimple optimization, which rely on certain
target hooks need to check alignment, forwprop is an example for
that, result of simplify_builtin_call rely on the alignment on some
target like ARM or RISC-V.
- Exclude static local var and hard register var in the process of
alignment adjustment.
- This patch fix gfortran.dg/pr45636.f90 for arm and riscv.
- Regression test on riscv32/riscv64 and x86_64-linux-gnu, no new fail
introduced.
gcc/ChangeLog
PR target/90811
* Makefile.in (OBJS): Add adjust-alignment.o.
* adjust-alignment.c (pass_data_adjust_alignment): New.
(pass_adjust_alignment): New.
(pass_adjust_alignment::execute): New.
(make_pass_adjust_alignment): New.
* tree-pass.h (make_pass_adjust_alignment): New.
* passes.def: Add pass_adjust_alignment.
Diffstat (limited to 'gcc/Makefile.in')
-rw-r--r-- | gcc/Makefile.in | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 9ba21f7..0fe2ba2 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1267,6 +1267,7 @@ OBJS = \ insn-recog.o \ insn-enums.o \ ggc-page.o \ + adjust-alignment.o \ alias.o \ alloc-pool.o \ auto-inc-dec.o \ |