Hi Bernd, Hi Jie,
I am applying the patch below as an obvious fix for this problem
whilst compiling the BFIN port of GCC:
gcc/config/bfin/bfin.c: In function 'bool hwloop_optimize(hwloop_info)':
gcc/config/bfin/bfin.c:3481:41: error: request for member 'flags' in
'VEC_last_1<edge_def*>(loop->hwloop_info_d::incoming, ((const
char*)"/work/sources/gcc/current/gcc/config/bfin/bfin.c"), 3481u, ((const
char*)(& __FUNCTION__)))', which is of pointer type 'edge_def*' (maybe you
meant to use '->' ?)
gcc/config/bfin/bfin.c:3750:41: error: request for member 'flags' in
'VEC_last_1<edge_def*>(loop->hwloop_info_d::incoming, ((const
char*)"/work/sources/gcc/current/gcc/config/bfin/bfin.c"), 3750u, ((const
char*)(& __FUNCTION__)))', which is of pointer type 'edge_def*' (maybe you
meant to use '->' ?)
With this patch applied the bfin port now compiles correctly.
Cheers
Nick
gcc/ChangeLog
2012-08-16 Nick Clifton <[email protected]>
* config/bfin/bfin.c (hwloop_optimize): Fix use of VEC_last macro.
Index: gcc/config/bfin/bfin.c
===================================================================
--- gcc/config/bfin/bfin.c (revision 190438)
+++ gcc/config/bfin/bfin.c (working copy)
@@ -3478,7 +3478,7 @@
/* If we have to insert the LSETUP before a jump, count that jump in the
length. */
if (VEC_length (edge, loop->incoming) > 1
- || !(VEC_last (edge, loop->incoming).flags & EDGE_FALLTHRU))
+ || !(VEC_last (edge, loop->incoming)->flags & EDGE_FALLTHRU))
{
gcc_assert (JUMP_P (insn));
insn = PREV_INSN (insn);
@@ -3747,7 +3747,7 @@
{
rtx prev = BB_END (loop->incoming_src);
if (VEC_length (edge, loop->incoming) > 1
- || !(VEC_last (edge, loop->incoming).flags & EDGE_FALLTHRU))
+ || !(VEC_last (edge, loop->incoming)->flags & EDGE_FALLTHRU))
{
gcc_assert (JUMP_P (prev));
prev = PREV_INSN (prev);