From 6642bdb4b14d655cedea29d01fbb0d854a6c14fa Mon Sep 17 00:00:00 2001 From: Jiong Wang Date: Fri, 26 Jun 2015 13:41:24 +0000 Subject: [PATCH] [AArch64][1/2] Rename SYMBOL_SMALL_GOT to SYMBOL_SMALL_GOT_4G 2015-06-26 Jiong Wang * config/aarch64/aarch64-protos.h (aarch64_symbol_type): Rename SYMBOL_SMALL_GOT to SYMBOL_SMALL_GOT_4G. * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Ditto. (aarch64_expand_mov_immediate): Ditto. (aarch64_print_operand): Ditto. (aarch64_classify_symbol): Ditto. From-SVN: r225013 --- gcc/ChangeLog | 9 +++++++++ gcc/config/aarch64/aarch64-protos.h | 7 ++++--- gcc/config/aarch64/aarch64.c | 10 +++++----- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 798126fea63..c508303ac9b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2015-06-26 Jiong Wang + + * config/aarch64/aarch64-protos.h (aarch64_symbol_type): Rename + SYMBOL_SMALL_GOT to SYMBOL_SMALL_GOT_4G. + * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Ditto. + (aarch64_expand_mov_immediate): Ditto. + (aarch64_print_operand): Ditto. + (aarch64_classify_symbol): Ditto. + 2015-06-26 Nathan Sidwell * config/nvptx/nvptx.md (call_operation): Remove unused variables. diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index ac92c5924a4..249a701a291 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -49,12 +49,13 @@ enum aarch64_symbol_context This corresponds to the small code model of the compiler. - SYMBOL_SMALL_GOT: Similar to the one above but this + SYMBOL_SMALL_GOT_4G: Similar to the one above but this gives us the GOT entry of the symbol being referred to : Thus calculating the GOT entry for foo is done using the following sequence of instructions. The ADRP instruction gets us to the page containing the GOT entry of the symbol - and the got_lo12 gets us the actual offset in it. + and the got_lo12 gets us the actual offset in it, together + the base and offset, we can address 4G size GOT table. adrp x0, :got:foo ldr x0, [x0, :gotoff_lo12:foo] @@ -94,7 +95,7 @@ enum aarch64_symbol_context enum aarch64_symbol_type { SYMBOL_SMALL_ABSOLUTE, - SYMBOL_SMALL_GOT, + SYMBOL_SMALL_GOT_4G, SYMBOL_SMALL_TLSGD, SYMBOL_SMALL_TLSDESC, SYMBOL_SMALL_GOTTPREL, diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index d8e03b7b636..67e21c821d0 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -826,7 +826,7 @@ aarch64_load_symref_appropriately (rtx dest, rtx imm, emit_insn (gen_rtx_SET (dest, imm)); return; - case SYMBOL_SMALL_GOT: + case SYMBOL_SMALL_GOT_4G: { /* In ILP32, the mode of dest can be either SImode or DImode, while the got entry is always of SImode size. The mode of @@ -1478,7 +1478,7 @@ aarch64_expand_mov_immediate (rtx dest, rtx imm) case SYMBOL_SMALL_TLSGD: case SYMBOL_SMALL_TLSDESC: case SYMBOL_SMALL_GOTTPREL: - case SYMBOL_SMALL_GOT: + case SYMBOL_SMALL_GOT_4G: case SYMBOL_TINY_GOT: if (offset != const0_rtx) { @@ -4359,7 +4359,7 @@ aarch64_print_operand (FILE *f, rtx x, char code) switch (aarch64_classify_symbolic_expression (x, SYMBOL_CONTEXT_ADR)) { - case SYMBOL_SMALL_GOT: + case SYMBOL_SMALL_GOT_4G: asm_fprintf (asm_out_file, ":got:"); break; @@ -4392,7 +4392,7 @@ aarch64_print_operand (FILE *f, rtx x, char code) case 'L': switch (aarch64_classify_symbolic_expression (x, SYMBOL_CONTEXT_ADR)) { - case SYMBOL_SMALL_GOT: + case SYMBOL_SMALL_GOT_4G: asm_fprintf (asm_out_file, ":lo12:"); break; @@ -7403,7 +7403,7 @@ aarch64_classify_symbol (rtx x, rtx offset, case AARCH64_CMODEL_SMALL_PIC: if (!aarch64_symbol_binds_local_p (x)) - return SYMBOL_SMALL_GOT; + return SYMBOL_SMALL_GOT_4G; return SYMBOL_SMALL_ABSOLUTE; default: -- 2.30.2