https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63304
--- Comment #27 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> --- (In reply to Ramana Radhakrishnan from comment #26) > Author: ramana > Date: Fri Oct 9 10:58:06 2015 > New Revision: 228644 > > URL: https://gcc.gnu.org/viewcvs?rev=228644&root=gcc&view=rev > Log: > [AArch64] Handle literal pools for functions > 1 MiB in size. > > > This patch fixes the issue in PR63304 where we have > functions that are > 1MiB. The idea is to use adrp / ldr or adrp / add > instructions to address the literal pools under the use of a command line > option. I would like to turn this on by default on trunk but keep this > disabled by default for the release branches in order to get some > serious testing for this feature while it bakes on trunk. > > As a follow-up I would like to try and see if estimate_num_insns or > something else can give us a heuristic to turn this on for "large" functions. > After all the number of incidences of this are quite low in real life, > so may be we should look to restrict this use as much as possible on the > grounds that this code generation implies an extra integer register for > addressing for every floating point and vector constant and I don't think > that's great in code that already may have high register pressure. > > Tested on aarch64-none-elf with no regressions. A previous > version was bootstrapped and regression tested. > > Applied to trunk. > > regards > Ramana > > 2015-09-14 Ramana Radhakrishnan <ramana.radhakrish...@arm.com> > > PR target/63304 > * config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Handle > nopcrelative_literal_loads. > (aarch64_classify_address): Likewise. > (aarch64_constant_pool_reload_icode): Define. > (aarch64_secondary_reload): Handle secondary reloads for > literal pools. > (aarch64_override_options): Handle nopcrelative_literal_loads. > (aarch64_classify_symbol): Handle nopcrelative_literal_loads. > * config/aarch64/aarch64.md (aarch64_reload_movcp<GPF_TF:mode><P:mode>): > Define. > (aarch64_reload_movcp<VALL:mode><P:mode>): Likewise. > * config/aarch64/aarch64.opt (mpc-relative-literal-loads): New option. > * config/aarch64/predicates.md (aarch64_constant_pool_symref): New > predicate. > * doc/invoke.texi (mpc-relative-literal-loads): Document. > > > Added: > trunk/gcc/testsuite/gcc.target/arm/pr67366.c > Modified: > trunk/gcc/ChangeLog > trunk/gcc/gimple-fold.c > trunk/gcc/testsuite/ChangeLog > trunk/gcc/testsuite/lib/target-supports.exp This commit really was for PR67366.. Copied wrong text into the commit message.