[Bug middle-end/81443] gcc-7.1.0/MIPS N32: build/genrecog.o: virtual memory exhausted: Cannot allocate memory

kumba at gentoo dot org gcc-bugzilla@gcc.gnu.org
Tue Jan 16 05:10:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81443

Joshua Kinard <kumba at gentoo dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Version|7.1.0                       |7.2.0
            Version|7.1.0                       |7.2.0

--- Comment #4 from Joshua Kinard <kumba at gentoo dot org> ---
After a week of bisecting, it looks like PR59461 is what causes this
regression.  Indeed, looking at the comments on #59461, Matthew Fortune thought
that N64 could have been broken, and I am assuming that was fixed in PR78660? 
This issue I am seeing under N32 might be something different.

Here is the git bisect history I followed:

start:
bad da8dff89fa93 (HEAD)
good 45dd06cef49f (gcc-6_4_0-release)

 1. a050099a416f (good)
 2. 873a9b6435c7 (bad)
 3. eedf6f96c360 (good)
 4. 8139561f6fe6 (bad)
 5. c02417adbaf1 (good)
 6. 63c8aefc8cbf (bad)
 7. 48baf518aeb5 (skip)
 7. 36bb9d71a876 (good)
 8. 44618e466be5 (bad)
 9. 682d2b7ee96c (bad)
10. 4699a580bd1f (bad)
11. 15bd70ad1a73 (good)
12. 9dbb7881f36e (bad)
13. 454decdf75fc (bad)
14. 1998c023a3ed (bad)

Which then yields:

1998c023a3ed6c59d8f1eea3a34528a9d6a93fe1 is the first bad commit
commit 1998c023a3ed6c59d8f1eea3a34528a9d6a93fe1
Author: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Nov 11 22:38:33 2016 +0000

            PR rtl-optimization/59461
            * doc/rtl.texi (paradoxical subregs): Add missing word.
            * combine.c (reg_nonzero_bits_for_combine): Do not discard results
            in modes with precision larger than that of last_set_mode.
            * rtlanal.c (nonzero_bits1) <SUBREG>: If WORD_REGISTER_OPERATIONS
is
            set and LOAD_EXTEND_OP is appropriate, propagate results from inner
            REGs to paradoxical SUBREGs.
            (num_sign_bit_copies1) <SUBREG>: Likewise.  Check that the mode is
not
            larger than a word before invoking LOAD_EXTEND_OP on it.


    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242326
138bc75d-0d04-0410-961f-82ee72b054a4

:040000 040000 dd706ac97469731dec045095572859552211457b
59c5b8ea5e019c4e25f246a1295b244ba2a50c9a M      gcc

--------

Note that part of the way through the bisect (~step 8), I had to manually apply
the patch from PR78338 to fix a build error.  The first attempt at step 7 also
had to be skipped one time due to another build error that I couldn't find much
on.

I'll try reverting the patch for PR59461 on gcc-7 HEAD and see if that actually
completes or not and report back.

Also confirmed this happens on both MIPS-III and MIPS-IV (r12000) ISA.

--- Comment #5 from Joshua Kinard <kumba at gentoo dot org> ---
After a week of bisecting, it looks like PR59461 is what causes this
regression.  Indeed, looking at the comments on #59461, Matthew Fortune thought
that N64 could have been broken, and I am assuming that was fixed in PR78660? 
This issue I am seeing under N32 might be something different.

Here is the git bisect history I followed:

start:
bad da8dff89fa93 (HEAD)
good 45dd06cef49f (gcc-6_4_0-release)

 1. a050099a416f (good)
 2. 873a9b6435c7 (bad)
 3. eedf6f96c360 (good)
 4. 8139561f6fe6 (bad)
 5. c02417adbaf1 (good)
 6. 63c8aefc8cbf (bad)
 7. 48baf518aeb5 (skip)
 7. 36bb9d71a876 (good)
 8. 44618e466be5 (bad)
 9. 682d2b7ee96c (bad)
10. 4699a580bd1f (bad)
11. 15bd70ad1a73 (good)
12. 9dbb7881f36e (bad)
13. 454decdf75fc (bad)
14. 1998c023a3ed (bad)

Which then yields:

1998c023a3ed6c59d8f1eea3a34528a9d6a93fe1 is the first bad commit
commit 1998c023a3ed6c59d8f1eea3a34528a9d6a93fe1
Author: ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Nov 11 22:38:33 2016 +0000

            PR rtl-optimization/59461
            * doc/rtl.texi (paradoxical subregs): Add missing word.
            * combine.c (reg_nonzero_bits_for_combine): Do not discard results
            in modes with precision larger than that of last_set_mode.
            * rtlanal.c (nonzero_bits1) <SUBREG>: If WORD_REGISTER_OPERATIONS
is
            set and LOAD_EXTEND_OP is appropriate, propagate results from inner
            REGs to paradoxical SUBREGs.
            (num_sign_bit_copies1) <SUBREG>: Likewise.  Check that the mode is
not
            larger than a word before invoking LOAD_EXTEND_OP on it.


    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242326
138bc75d-0d04-0410-961f-82ee72b054a4

:040000 040000 dd706ac97469731dec045095572859552211457b
59c5b8ea5e019c4e25f246a1295b244ba2a50c9a M      gcc

--------

Note that part of the way through the bisect (~step 8), I had to manually apply
the patch from PR78338 to fix a build error.  The first attempt at step 7 also
had to be skipped one time due to another build error that I couldn't find much
on.

I'll try reverting the patch for PR59461 on gcc-7 HEAD and see if that actually
completes or not and report back.

Also confirmed this happens on both MIPS-III and MIPS-IV (r12000) ISA.


More information about the Gcc-bugs mailing list