Hi Jeff: It's make older gcc version can't build RISC-V port, how about use gcc_fallthrough instead?
diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c index f4c1f23..d1af07f5 100644 --- a/gcc/config/riscv/riscv.c +++ b/gcc/config/riscv/riscv.c @@ -2089,13 +2089,13 @@ riscv_emit_float_compare (enum rtx_code *code, rtx *op0, rtx *op1) case UNLT: std::swap (cmp_op0, cmp_op1); - __attribute__((fallthrough)); + gcc_fallthrough (); UNORDERED_COMPARISON(UNGT, le) case UNLE: std::swap (cmp_op0, cmp_op1); - __attribute__((fallthrough)); + gcc_fallthrough (); UNORDERED_COMPARISON(UNGE, lt) #undef UNORDERED_COMPARISON On Tue, Mar 14, 2017 at 2:22 AM, Palmer Dabbelt <pal...@dabbelt.com> wrote: > On Mon, 13 Mar 2017 10:50:28 PDT (-0700), l...@redhat.com wrote: >> >> RISCV targets were failing to build due to implicit-fallthru warnings. >> >> This changes comments which indicated expected fallthru to use the >> attribute and the port builds again. I assume something about the use >> of the cpp macro is causing the comment to not have the intended effect. >> I didn't dig into that. Nor did I try to change all the fallthru >> comments to use the attribute -- just the two that implicit-fallthru was >> complaining about. >> >> Verified that after this patch the two riscv targets build. Installed >> on the trunk. >> >> Jeff >> >> commit 448373f1f2912228dc72605fb6f3343fd57023ee >> Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4> >> Date: Mon Mar 13 17:49:40 2017 +0000 >> >> * config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru >> attribute rather than comments. >> >> git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@246101 >> 138bc75d-0d04-0410-961f-82ee72b054a4 >> >> diff --git a/gcc/ChangeLog b/gcc/ChangeLog >> index 124dca3..e863cdf 100644 >> --- a/gcc/ChangeLog >> +++ b/gcc/ChangeLog >> @@ -1,5 +1,8 @@ >> 2017-03-13 Jeff Law <l...@redhat.com> >> >> + * config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru >> + attribute rather than comments. >> + >> * config/pdp11/pdp11.md (movmemhi): Adjust operand numbers to >> match_scratch operand is highest. >> >> diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c >> index 89567f7..e5044ba 100644 >> --- a/gcc/config/riscv/riscv.c >> +++ b/gcc/config/riscv/riscv.c >> @@ -2089,13 +2089,13 @@ riscv_emit_float_compare (enum rtx_code *code, rtx >> *op0, rtx *op1) >> >> case UNLT: >> std::swap (cmp_op0, cmp_op1); >> - /* Fall through. */ >> + __attribute__((fallthrough)); >> >> UNORDERED_COMPARISON(UNGT, le) >> >> case UNLE: >> std::swap (cmp_op0, cmp_op1); >> - /* Fall through. */ >> + __attribute__((fallthrough)); >> >> UNORDERED_COMPARISON(UNGE, lt) >> #undef UNORDERED_COMPARISON > > Thanks!