diff options
author | David S. Miller <davem@pierdol.cobaltmicro.com> | 1998-08-10 05:34:44 +0000 |
---|---|---|
committer | David S. Miller <davem@gcc.gnu.org> | 1998-08-09 22:34:44 -0700 |
commit | e0d801845122f3952530d8047f17cfe62bf2aafc (patch) | |
tree | aa7b5df64d652b017925c5ebca8ec5b668713b88 /gcc/final.c | |
parent | b08b85c4a0b590394116fdb5acc8d4e2068544b1 (diff) | |
download | gcc-e0d801845122f3952530d8047f17cfe62bf2aafc.zip gcc-e0d801845122f3952530d8047f17cfe62bf2aafc.tar.gz gcc-e0d801845122f3952530d8047f17cfe62bf2aafc.tar.bz2 |
Sparc backend rewrite by rth and myself, please
peruse the lengthy ChangeLog for a blow by blow account.
Co-Authored-By: Richard Henderson <rth@cygnus.com>
From-SVN: r21652
Diffstat (limited to 'gcc/final.c')
-rw-r--r-- | gcc/final.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc/final.c b/gcc/final.c index 4b05fc7..e6a1d53 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -2326,6 +2326,11 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes) if (GET_CODE (nextbody) == ADDR_VEC || GET_CODE (nextbody) == ADDR_DIFF_VEC) { +#if defined(ASM_OUTPUT_ADDR_VEC) || defined(ASM_OUTPUT_ADDR_DIFF_VEC) + /* In this case, the case vector is being moved by the + target, so don't output the label at all. Leave that + to the back end macros. */ +#else if (! JUMP_TABLES_IN_TEXT_SECTION) { readonly_data_section (); @@ -2344,6 +2349,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes) #else ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (insn)); #endif +#endif break; } } @@ -2397,6 +2403,24 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes) app_on = 0; } +#if defined(ASM_OUTPUT_ADDR_VEC) || defined(ASM_OUTPUT_ADDR_DIFF_VEC) + if (GET_CODE (body) == ADDR_VEC) + { +#ifdef ASM_OUTPUT_ADDR_VEC + ASM_OUTPUT_ADDR_VEC (PREV_INSN (insn), body); +#else + abort(); +#endif + } + else + { +#ifdef ASM_OUTPUT_ADDR_DIFF_VEC + ASM_OUTPUT_ADDR_DIFF_VEC (PREV_INSN (insn), body); +#else + abort(); +#endif + } +#else vlen = XVECLEN (body, GET_CODE (body) == ADDR_DIFF_VEC); for (idx = 0; idx < vlen; idx++) { @@ -2427,6 +2451,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes) CODE_LABEL_NUMBER (PREV_INSN (insn)), insn); #endif +#endif function_section (current_function_decl); |