This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 10/16/13 09:34, Cesar Philippidis wrote:
On 10/15/13 12:16 PM, Jeff Law wrote:On 10/10/13 10:25, Jakub Jelinek wrote:On Thu, Oct 10, 2013 at 07:26:43AM -0700, Cesar Philippidis wrote:This patch addresses an ICE when building qemu for a Mips target in Yocto. Both gcc-trunk, gcc-4.8 and all of the targets are potentially affected. The problem occurs because the instruction combine phase uses two data structures to keep track of registers, reg_stat and regstat_n_sets_and_refs, but they potentially end up out of sync; when combine inserts a new register into reg_stat it does not update regstat_n_sets_and_refs. Failing to update the latter results in an occasional segmentation fault. Is this OK for trunk and gcc-4.8? If so, please check it in. I tested it on Mips and x86-64 and no regressions showed up.That looks broken. You leave everything from the last size till the current one uninitialized, so it would only work if combine_split_insns always increments max_reg_num () by at most one.I don't think that assumption is safe. Consider a parallel with a bunch of (clobber (match_scratch)) expressions.I address that in the patch posted here <http://gcc.gnu.org/ml/gcc-patches/2013-10/msg00802.html>. Is that still insufficient?
Thanks. I wasn't aware of the follow-up.
Furthermore, there are macros which should be used to access the fields, and, if the vector is ever going to be resized, supposedly it should be vec.h vector rather than just array. Or perhaps take into account: /* If a pass need to change these values in some magical way or the pass needs to have accurate values for these and is not using incremental df scanning, then it should use REG_N_SETS and REG_N_USES. If the pass is doing incremental scanning then it should be getting the info from DF_REG_DEF_COUNT and DF_REG_USE_COUNT. */ and not use REG_N_SETS etc. but instead the df stuff.Which begs the question, how exactly is combine utilizing the regstat_n_* structures and is that use even valid for combine?I'll take a look at that.
This needs to be resolved before we can go forward with your patch. jeff
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |