diff options
author | Claudiu Zissulescu <claziss@synopsys.com> | 2018-10-31 12:27:35 +0100 |
---|---|---|
committer | Claudiu Zissulescu <claziss@gcc.gnu.org> | 2018-10-31 12:27:35 +0100 |
commit | aac1c11ce4edd9c2e6af7e9ee8abcaba98d8741f (patch) | |
tree | 07e0408043af521dfe832f263dea8d6e7cea5011 /gcc/config/arc/arc.c | |
parent | 8efa18d693207598020f6d7aabb680397ff3815c (diff) | |
download | gcc-aac1c11ce4edd9c2e6af7e9ee8abcaba98d8741f.zip gcc-aac1c11ce4edd9c2e6af7e9ee8abcaba98d8741f.tar.gz gcc-aac1c11ce4edd9c2e6af7e9ee8abcaba98d8741f.tar.bz2 |
[ARC] Add BI/BIH instruction support.
Use BI/BIH instruction to implement casesi pattern. Only ARC V2.
gcc/
xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.c (arc_override_options): Remove
TARGET_COMPACT_CASESI.
* config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Update.
(CASE_VECTOR_MODE): Likewise.
(CASE_VECTOR_PC_RELATIVE): Likewise.
(CASE_VECTOR_SHORTEN_MODE): Likewise.
(CASE_VECTOR_SHORTEN_MODE1): Delete.
(ADDR_VEC_ALIGN): Update.
(ASM_OUTPUT_CASE_LABEL): Undefine.
(ASM_OUTPUT_BEFORE_CASE_LABEL): Undefine.
(TARGET_BI_BIH): Define.
(DEFAULT_BRANCH_INDEX): Likewise.
* config/arc/arc.md (casesi): Rework to accept BI/BIH
instructions, remove compact_casesi use case.
(casesi_compact_jump): Remove.
(casesi_dispatch): New pattern.
* config/arc/arc.opt: Add mbranch-index option. Deprecate
compact_casesi option.
* doc/invoke.texi: Document mbranch-index option.
gcc/testsuite
xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com>
* gcc.target/arc/jumptable.c: New test.
From-SVN: r265675
Diffstat (limited to 'gcc/config/arc/arc.c')
-rw-r--r-- | gcc/config/arc/arc.c | 19 |
1 files changed, 0 insertions, 19 deletions
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 7cd0a70..00ec77d 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -1290,33 +1290,14 @@ arc_override_options (void) if (arc_size_opt_level == 3) optimize_size = 1; - /* Compact casesi is not a valid option for ARCv2 family. */ - if (TARGET_V2) - { - if (TARGET_COMPACT_CASESI) - { - warning (OPT_mcompact_casesi, - "compact-casesi is not applicable to ARCv2"); - TARGET_COMPACT_CASESI = 0; - } - } - else if (optimize_size == 1 - && !global_options_set.x_TARGET_COMPACT_CASESI) - TARGET_COMPACT_CASESI = 1; - if (flag_pic) target_flags |= MASK_NO_SDATA_SET; if (flag_no_common == 255) flag_no_common = !TARGET_NO_SDATA_SET; - /* TARGET_COMPACT_CASESI needs the "q" register class. */ if (TARGET_MIXED_CODE) TARGET_Q_CLASS = 1; - if (!TARGET_Q_CLASS) - TARGET_COMPACT_CASESI = 0; - if (TARGET_COMPACT_CASESI) - TARGET_CASE_VECTOR_PC_RELATIVE = 1; /* Check for small data option */ if (!global_options_set.x_g_switch_value && !TARGET_NO_SDATA_SET) |