On 9/2/16, David Malcolm <dmalc...@redhat.com> wrote: > On Fri, 2016-09-02 at 15:41 -0400, Eric Gallager wrote: >> On 9/2/16, Segher Boessenkool <seg...@kernel.crashing.org> wrote: >> > On Fri, Sep 02, 2016 at 02:21:07PM -0400, Eric Gallager wrote: >> > > ../../gcc/combine.c: In function ‘int >> > > combine_instructions(rtx_insn*, >> > > unsigned int)’: >> > > ../../gcc/combine.c:1310:8: warning: ‘prev’ may be used >> > > uninitialized >> > > in this function [-Wmaybe-uninitialized] >> > > if ((next = try_combine (insn, prev, NULL, NULL, >> > > ^~ >> > >> > That is: >> > >> > if (HAVE_cc0 >> > && JUMP_P (insn) >> > && (prev = prev_nonnote_insn (insn)) != 0 >> > && NONJUMP_INSN_P (prev) >> > && sets_cc0_p (PATTERN (prev))) >> > { >> > if ((next = try_combine (insn, prev, NULL, NULL, >> > &new_direct_jump_p, >> > last_combined_insn)) != 0) >> > >> > so prev is always initialised here. Could you try to find out why >> > GCC >> > warns anyway? Or open a PR? >> > >> > HAVE_cc0 probably expands to 0 (I'm not sure what your target is), >> > that >> > might have something to do with it. >> > >> > >> > Segher >> > >> >> >> My target is i386-apple-darwin9.8.0. If HAVE_cc0 expands to 0, then >> the code inside the brackets wouldn't even be reached anyways, would >> it? Where would HAVE_cc0 be defined? > > It's defined in insn-config.h, which is generated in build/gcc by > genconfig from the target's machine description file. > >
Okay, yeah, checking there, it has: #define HAVE_cc0 0 on line 12. So Segher's intuition was correct. (I'm attaching that whole file for reference)
/* Generated automatically by the program `genconfig' from the machine description file `md'. */ #ifndef GCC_INSN_CONFIG_H #define GCC_INSN_CONFIG_H #define MAX_RECOG_OPERANDS 30 #define MAX_DUP_OPERANDS 30 #ifndef MAX_INSNS_PER_SPLIT #define MAX_INSNS_PER_SPLIT 5 #endif #define HAVE_cc0 0 #define CC0_P(X) ((X) ? 0 : 0) #define HAVE_conditional_move 1 #define HAVE_conditional_execution 0 #define HAVE_lo_sum 0 #define HAVE_rotate 1 #define HAVE_rotatert 1 #define HAVE_peephole 0 #define HAVE_peephole2 1 #define MAX_INSNS_PER_PEEP2 4 #endif /* GCC_INSN_CONFIG_H */