MIPS/GCC: Mark text contents as code or data

Programming / Compilers / GCC - macro [138bc75d-0d04-0410-961f-82ee72b054a4] - 16 November 2016 11:12 UTC

gcc/
- config/mips/mips-protos.h (mips_set_text_contents_type): New prototype.
- config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): New macro. (ASM_OUTPUT_CASE_END): Likewise.
- config/mips/mips.c (mips_set_text_contents_type): New function. (mips16_emit_constants): Record the pool's initial label number with the `consttable' insn. Emit a `consttable_end' insn at the end. (mips_final_prescan_insn): Call `mips_set_text_contents_type' for `consttable' insns. (mips_final_postscan_insn): Call `mips_set_text_contents_type' for `consttable_end' insns.
- config/mips/mips.md (unspec): Add UNSPEC_CONSTTABLE_END enum
value. (consttable): Add operand. (consttable_end): New insn.

gcc/testsuite/
- gcc.target/mips/data-sym-jump.c: New test case.
- gcc.target/mips/data-sym-pool.c: New test case.
- gcc.target/mips/insn-pseudo-4.c: Adjust for constant pool annotation.

35293eb MIPS/GCC: Mark text contents as code or data
gcc/ChangeLog | 20 +++++++
gcc/config/mips/mips-protos.h | 2 +
gcc/config/mips/mips.c | 69 +++++++++++++++++++++++--
gcc/config/mips/mips.h | 26 ++++++++++
gcc/config/mips/mips.md | 12 ++++-
gcc/testsuite/ChangeLog | 7 +++
gcc/testsuite/gcc.target/mips/data-sym-jump.c | 50 ++++++++++++++++++
gcc/testsuite/gcc.target/mips/data-sym-pool.c | 25 +++++++++
gcc/testsuite/gcc.target/mips/insn-pseudo-4.c | 4 +-
9 files changed, 209 insertions(+), 6 deletions(-)

Upstream: gcc.gnu.org


  • Share