Bug 53602 - [4.7 Regression] Libre Office causes an internal compiler error
Summary: [4.7 Regression] Libre Office causes an internal compiler error
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.7.0
: P3 normal
Target Milestone: 4.7.1
Assignee: Richard Henderson
URL:
Keywords:
: 53644 (view as bug list)
Depends on:
Blocks:
 
Reported: 2012-06-07 12:23 UTC by Andrew Benton
Modified: 2018-03-21 18:35 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2012-06-07 00:00:00


Attachments
skeletoncommon.ii preprocessor output compressed (218.35 KB, application/x-xz)
2012-06-07 16:12 UTC, Andrew Benton
Details
pr53602.ii (2.08 KB, text/plain)
2012-06-07 21:40 UTC, Jakub Jelinek
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Benton 2012-06-07 12:23:43 UTC
Libre Office 3.5.3 compiles fine for me with Gcc 4.7 on x86_64 but on
i686 the build dies with this error:

Making:    all_uno-skeletonmaker.dpobj
Compiling: unodevtools/source/skeletonmaker/skeletonmaker.cxx
Compiling: unodevtools/source/skeletonmaker/skeletoncommon.cxx
/home/andy/save/sources/extras/libreoffice-core-3.5.3.2/unodevtools/source/skeletonmaker/skeletoncommon.cxx: In function 'void skeletonmaker::checkDefaultInterfaces(boost::unordered::unordered_set<rtl::OString, rtl::OStringHash>&, const boost::unordered::unordered_set<rtl::OString, rtl::OStringHash>&, const rtl::OString&)':
/home/andy/save/sources/extras/libreoffice-core-3.5.3.2/unodevtools/source/skeletonmaker/skeletoncommon.cxx:317:1: internal compiler error: in force_move_args_size_note, at combine-stack-adj.c:419
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

The "internal compiler error" and the request for a bug report to be
sent to gcc makes it look like a bug in Gcc 4.7. The actual code that
causes the problem looks like this:

void checkDefaultInterfaces(
         boost::unordered_set< OString, OStringHash >& interfaces,
         const boost::unordered_set< OString, OStringHash >& services,
       const OString & propertyhelper)
{
    if ( services.empty() ) {
        if (interfaces.find("com.sun.star.lang.XServiceInfo") != interfaces.end())
            interfaces.erase("com.sun.star.lang.XServiceInfo");
    } else {
        if (interfaces.find("com.sun.star.lang.XServiceInfo") == interfaces.end())
            interfaces.insert("com.sun.star.lang.XServiceInfo");
    }

    if ( propertyhelper.equals("_") ) {
        if (interfaces.find("com.sun.star.beans.XPropertySet")
            != interfaces.end())
            interfaces.erase("com.sun.star.beans.XPropertySet");
        if (interfaces.find("com.sun.star.beans.XFastPropertySet")
            != interfaces.end())
            interfaces.erase("com.sun.star.beans.XFastPropertySet");
        if (interfaces.find("com.sun.star.beans.XPropertyAccess")
            != interfaces.end())
            interfaces.erase("com.sun.star.beans.XPropertyAccess");
    }
}

Googling on the error found this bug report at Ubunut:
https://bugs.launchpad.net/ubuntu/+source/gcc-4.7/+bug/1007616
But sadly they have no solution.

I have previously built Libre Office 3.5.3 on i686 with Gcc 4.7, what was different this time was that I used an svn pull of the Gcc 4.7 branch (r188021). Ie, Gcc had changes that had been checked into the Gcc 4.7 branch since gcc-4.7.0 was released.

Looking at http://gcc.gnu.org/bugs/#detailed it seems that I'm supposed to provide the output of something like:

gcc -v -save-temps all-your-options source-file

Sadly I have no clue how gcc was called by the Libre Office dmake system (I am completely unfamiliar with dmake). If someone could guide me on how to find out how gcc was called I would appreciate it.

Another problem with debugging this is that I can only reproduce this on a 32 bit system and all my 32 bit computers are old and slow. Compiling Libre office takes about 20 hours but fortunately the error occurs only about 4 hours into the build
Comment 1 Jakub Jelinek 2012-06-07 12:35:28 UTC
Yeah, preprocessed source plus g++ options are needed.
I don't know the libreoffice build system either, as last resort solution you could try
mkdir ~/bin
cat > ~/bin/g++ <<\EOF
#!/bin/sh
mkdir -p /tmp/cmdlines/ 2>/dev/null
echo cwd is `pwd` cmdline "$@" >> /tmp/cmdlines/$$
exec /usr/bin/g++ "$@"

and run the build under PATH=~/bin:$PATH CXX=~/bin/g++ or so, then just
grep for the source file in question.  If you hit it already once, supposedly another make invocation wouldn't recompile everything, just a few sources and ICE again.
Comment 2 Andrew Benton 2012-06-07 15:26:13 UTC
Genius idea! Unfortunately the preprocessor output skeletoncommon.ii is more than 2MB and so I can't attach it to this bug. I've put it here http://benton.eu.com/skeletoncommon.ii
The command that produced it was:

andy@router:~$ cd /home/andy/libreoffice-core-3.5.4.2/unodevtools/source/skeletonmaker
andy@router:~/libreoffice-core-3.5.4.2/unodevtools/source/skeletonmaker$ g++ -v -save-temps -fmessage-length=0 -c -Os -I. -I../../unxlngi6.pro/inc/uno-skeletonmaker -I../inc -I../../inc -I../../unx/inc -I../../unxlngi6.pro/inc -I. -I/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/stl -I/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/external -I/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc -I/home/andy/libreoffice-core-3.5.4.2/solenv/inc/unxlngi6 -I/home/andy/libreoffice-core-3.5.4.2/solenv/inc -I/home/andy/libreoffice-core-3.5.4.2/res -I/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/udkapi -I/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/offapi -I/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/oovbaapi -I. -I../../res -I. -pipe -mtune=pentiumpro -fvisibility-inlines-hidden -std=c++0x -Wno-deprecated-declarations -Wall -Wextra -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -DLINUX -DUNX -DVCL -DGCC -DINTEL -DGLIBC=2 -D_PTHREADS -D_REENTRANT -DNEW_SOLAR -D_USE_NAMESPACE=1 -DHAVE_GCC_VISIBILITY_FEATURE -DX86 -D__DMAKE -DUNIX -DCPPU_ENV=gcc3 -DGXX_INCLUDE_PATH=/usr/include/c++/4.7.1 -DSUPD=350 -DPRODUCT -DNDEBUG -DOSL_DEBUG_LEVEL=0 -DOPTIMIZE -DGSTREAMER -DHAVE_THREADSAFE_STATICS -fexceptions -fno-enforce-eh-specs -DEXCEPTIONS_ON -o ../../unxlngi6.pro/obj/skeletoncommon.o /home/andy/libreoffice-core-3.5.4.2/unodevtools/source/skeletonmaker/skeletoncommon.cxx
g++: warning: -pipe ignored because -save-temps specified
Using built-in specs.
COLLECT_GCC=g++
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.7-30-05-12/configure --prefix=/usr --enable-shared --enable-languages=c,c++ --enable-threads=posix --enable-__cxa_atexit --enable-cloog-backend=isl --enable-clocale=gnu --disable-multilib --disable-bootstrap --disable-static --with-system-zlib
Thread model: posix
gcc version 4.7.1 20120530 (prerelease) (GCC) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-fmessage-length=0' '-c' '-Os' '-I' '.' '-I' '../../unxlngi6.pro/inc/uno-skeletonmaker' '-I' '../inc' '-I' '../../inc' '-I' '../../unx/inc' '-I' '../../unxlngi6.pro/inc' '-I' '.' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/stl' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/external' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc' '-I' '/home/andy/libreoffice-core-3.5.4.2/solenv/inc/unxlngi6' '-I' '/home/andy/libreoffice-core-3.5.4.2/solenv/inc' '-I' '/home/andy/libreoffice-core-3.5.4.2/res' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/udkapi' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/offapi' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/oovbaapi' '-I' '.' '-I' '../../res' '-I' '.' '-pipe' '-mtune=pentiumpro' '-fvisibility-inlines-hidden' '-std=c++11' '-Wno-deprecated-declarations' '-Wall' '-Wextra' '-Wendif-labels' '-Wshadow' '-Wno-ctor-dtor-privacy' '-Wno-non-virtual-dtor' '-D' 'LINUX' '-D' 'UNX' '-D' 'VCL' '-D' 'GCC' '-D' 'INTEL' '-D' 'GLIBC=2' '-D' '_PTHREADS' '-D' '_REENTRANT' '-D' 'NEW_SOLAR' '-D' '_USE_NAMESPACE=1' '-D' 'HAVE_GCC_VISIBILITY_FEATURE' '-D' 'X86' '-D' '__DMAKE' '-D' 'UNIX' '-D' 'CPPU_ENV=gcc3' '-D' 'GXX_INCLUDE_PATH=/usr/include/c++/4.7.1' '-D' 'SUPD=350' '-D' 'PRODUCT' '-D' 'NDEBUG' '-D' 'OSL_DEBUG_LEVEL=0' '-D' 'OPTIMIZE' '-D' 'GSTREAMER' '-D' 'HAVE_THREADSAFE_STATICS' '-fexceptions' '-fno-enforce-eh-specs' '-D' 'EXCEPTIONS_ON' '-o' '../../unxlngi6.pro/obj/skeletoncommon.o' '-shared-libgcc' '-march=pentiumpro'
 /usr/libexec/gcc/i686-pc-linux-gnu/4.7.1/cc1plus -E -quiet -v -I . -I ../../unxlngi6.pro/inc/uno-skeletonmaker -I ../inc -I ../../inc -I ../../unx/inc -I ../../unxlngi6.pro/inc -I . -I /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/stl -I /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/external -I /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc -I /home/andy/libreoffice-core-3.5.4.2/solenv/inc/unxlngi6 -I /home/andy/libreoffice-core-3.5.4.2/solenv/inc -I /home/andy/libreoffice-core-3.5.4.2/res -I /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/udkapi -I /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/offapi -I /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/oovbaapi -I . -I ../../res -I . -D_GNU_SOURCE -D LINUX -D UNX -D VCL -D GCC -D INTEL -D GLIBC=2 -D _PTHREADS -D _REENTRANT -D NEW_SOLAR -D _USE_NAMESPACE=1 -D HAVE_GCC_VISIBILITY_FEATURE -D X86 -D __DMAKE -D UNIX -D CPPU_ENV=gcc3 -D GXX_INCLUDE_PATH=/usr/include/c++/4.7.1 -D SUPD=350 -D PRODUCT -D NDEBUG -D OSL_DEBUG_LEVEL=0 -D OPTIMIZE -D GSTREAMER -D HAVE_THREADSAFE_STATICS -D EXCEPTIONS_ON /home/andy/libreoffice-core-3.5.4.2/unodevtools/source/skeletonmaker/skeletoncommon.cxx -mtune=pentiumpro -march=pentiumpro -std=c++11 -Wno-deprecated-declarations -Wall -Wextra -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -fmessage-length=0 -fvisibility-inlines-hidden -fexceptions -fno-enforce-eh-specs -Os -fpch-preprocess -o skeletoncommon.ii
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/i686-pc-linux-gnu/4.7.1/../../../../i686-pc-linux-gnu/include"
ignoring nonexistent directory "../../unxlngi6.pro/inc/uno-skeletonmaker"
ignoring nonexistent directory "../inc"
ignoring nonexistent directory "../../unx/inc"
ignoring duplicate directory "."
ignoring nonexistent directory "/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/stl"
ignoring nonexistent directory "/home/andy/libreoffice-core-3.5.4.2/solenv/inc/unxlngi6"
ignoring nonexistent directory "/home/andy/libreoffice-core-3.5.4.2/res"
ignoring duplicate directory "."
ignoring nonexistent directory "../../res"
ignoring duplicate directory "."
#include "..." search starts here:
#include <...> search starts here:
 .
 ../../inc
 ../../unxlngi6.pro/inc
 /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/external
 /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc
 /home/andy/libreoffice-core-3.5.4.2/solenv/inc
 /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/udkapi
 /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/offapi
 /home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/oovbaapi
 /usr/lib/gcc/i686-pc-linux-gnu/4.7.1/../../../../include/c++/4.7.1
 /usr/lib/gcc/i686-pc-linux-gnu/4.7.1/../../../../include/c++/4.7.1/i686-pc-linux-gnu
 /usr/lib/gcc/i686-pc-linux-gnu/4.7.1/../../../../include/c++/4.7.1/backward
 /usr/lib/gcc/i686-pc-linux-gnu/4.7.1/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.7.1/include-fixed
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-fmessage-length=0' '-c' '-Os' '-I' '.' '-I' '../../unxlngi6.pro/inc/uno-skeletonmaker' '-I' '../inc' '-I' '../../inc' '-I' '../../unx/inc' '-I' '../../unxlngi6.pro/inc' '-I' '.' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/stl' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/external' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc' '-I' '/home/andy/libreoffice-core-3.5.4.2/solenv/inc/unxlngi6' '-I' '/home/andy/libreoffice-core-3.5.4.2/solenv/inc' '-I' '/home/andy/libreoffice-core-3.5.4.2/res' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/udkapi' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/offapi' '-I' '/home/andy/libreoffice-core-3.5.4.2/solver/unxlngi6.pro/inc/oovbaapi' '-I' '.' '-I' '../../res' '-I' '.' '-pipe' '-mtune=pentiumpro' '-fvisibility-inlines-hidden' '-std=c++11' '-Wno-deprecated-declarations' '-Wall' '-Wextra' '-Wendif-labels' '-Wshadow' '-Wno-ctor-dtor-privacy' '-Wno-non-virtual-dtor' '-D' 'LINUX' '-D' 'UNX' '-D' 'VCL' '-D' 'GCC' '-D' 'INTEL' '-D' 'GLIBC=2' '-D' '_PTHREADS' '-D' '_REENTRANT' '-D' 'NEW_SOLAR' '-D' '_USE_NAMESPACE=1' '-D' 'HAVE_GCC_VISIBILITY_FEATURE' '-D' 'X86' '-D' '__DMAKE' '-D' 'UNIX' '-D' 'CPPU_ENV=gcc3' '-D' 'GXX_INCLUDE_PATH=/usr/include/c++/4.7.1' '-D' 'SUPD=350' '-D' 'PRODUCT' '-D' 'NDEBUG' '-D' 'OSL_DEBUG_LEVEL=0' '-D' 'OPTIMIZE' '-D' 'GSTREAMER' '-D' 'HAVE_THREADSAFE_STATICS' '-fexceptions' '-fno-enforce-eh-specs' '-D' 'EXCEPTIONS_ON' '-o' '../../unxlngi6.pro/obj/skeletoncommon.o' '-shared-libgcc' '-march=pentiumpro'
 /usr/libexec/gcc/i686-pc-linux-gnu/4.7.1/cc1plus -fpreprocessed skeletoncommon.ii -quiet -dumpbase skeletoncommon.cxx -mtune=pentiumpro -march=pentiumpro -auxbase-strip ../../unxlngi6.pro/obj/skeletoncommon.o -Os -Wno-deprecated-declarations -Wall -Wextra -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -std=c++11 -version -fmessage-length=0 -fvisibility-inlines-hidden -fexceptions -fno-enforce-eh-specs -o skeletoncommon.s
GNU C++ (GCC) version 4.7.1 20120530 (prerelease) (i686-pc-linux-gnu)
	compiled by GNU C version 4.7.1 20120530 (prerelease), GMP version 5.0.4, MPFR version 3.1.0, MPC version 0.9
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++ (GCC) version 4.7.1 20120530 (prerelease) (i686-pc-linux-gnu)
	compiled by GNU C version 4.7.1 20120530 (prerelease), GMP version 5.0.4, MPFR version 3.1.0, MPC version 0.9
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: a3f5e158f4bae53c28ca78d37dcc6e13
/home/andy/libreoffice-core-3.5.4.2/unodevtools/source/skeletonmaker/skeletoncommon.cxx: In function ‘void skeletonmaker::checkDefaultInterfaces(boost::unordered::unordered_set<rtl::OString, rtl::OStringHash>&, const boost::unordered::unordered_set<rtl::OString, rtl::OStringHash>&, const rtl::OString&)’:
/home/andy/libreoffice-core-3.5.4.2/unodevtools/source/skeletonmaker/skeletoncommon.cxx:317:1: internal compiler error: in force_move_args_size_note, at combine-stack-adj.c:419
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

I hope that makes sense to someone...
Comment 3 Paolo Carlini 2012-06-07 15:45:19 UTC
Remember that you can always compress it.
Comment 4 Andrew Benton 2012-06-07 16:12:00 UTC
Created attachment 27580 [details]
skeletoncommon.ii preprocessor output compressed

(In reply to comment #3)
> Remember that you can always compress it.

Doh!
Comment 5 Jakub Jelinek 2012-06-07 21:40:25 UTC
Created attachment 27581 [details]
pr53602.ii

Slightly reduced testcase for -m32 -Os -std=c++11.
Comment 6 Jakub Jelinek 2012-06-07 21:53:25 UTC
Started with http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=186018
Comment 7 Jakub Jelinek 2012-06-08 07:51:25 UTC
We end up with:
(insn 38 73 40 5 (parallel [
            (set (reg/f:SI 7 sp)
                (plus:SI (reg/f:SI 7 sp)
                    (const_int 12 [0xc])))
            (clobber (reg:CC 17 flags))   
        ]) pr53602.ii:359 251 {*addsi_1}  
     (expr_list:REG_UNUSED (reg:CC 17 flags)
        (expr_list:REG_ARGS_SIZE (const_int 0 [0])
            (nil))))

(insn 40 38 41 5 (parallel [
            (set (reg/f:SI 7 sp)
                (plus:SI (reg/f:SI 7 sp)
                    (const_int -12 [0xfffffffffffffff4])))
            (clobber (reg:CC 17 flags))
        ]) pr53602.ii:64 251 {*addsi_1}
     (expr_list:REG_UNUSED (reg:CC 17 flags)
        (expr_list:REG_ARGS_SIZE (const_int 12 [0xc])
            (nil))))

(insn 41 40 42 5 (set (mem/f:SI (pre_dec:SI (reg/f:SI 7 sp)) [0 S4 A32])
        (mem/f/c:SI (plus:SI (reg/f:SI 6 bp)
                (const_int -12 [0xfffffffffffffff4])) [3 D.3489.pData+0 S4 A32])) pr53602.ii:64 43 {*pushsi2}
     (expr_list:REG_ARGS_SIZE (const_int 16 [0x10])
        (nil)))

before csa and csa obviously merges the two into sp += 0 that it wants to delete.
force_move_args_size is called with prev == NULL (as it is at the start of a bb).  But apparently cleanup_cfg at the start of csa pass jump threaded the call sequence starting at insn 41, so the two stack adjustments that cancel each other end up the only insns in a bb.  So we trigger:
      /* ??? We *must* have a place, lest we ICE on the lost adjustment.
         Options are: dummy clobber insn, nop, or prevent the removal of
         the sp += 0 insn.  Defer that decision until we can prove this
         can actually happen.  */

I guess if we proved that all the predecessors of the bb have the same current REG_ARGS_SIZE, or all the successor have the same current REG_ARGS_SIZE, we could avoid the note altogether.  Or do one of the things the comment talks about.  Richard, can you please handle this?
Comment 8 Jakub Jelinek 2012-06-08 07:57:23 UTC
Or perhaps just handle this particular case for now, when there has been jump threading right after the sp adjustment sequence that cancelled each other.
Thus, if we reach end of bb after the insn without seeing a CALL or or throwing insn and the bb has a single fallthru successor only, keep looking in the successor bb.
Comment 9 Richard Henderson 2012-06-08 14:10:29 UTC
Mine.
Comment 10 Richard Henderson 2012-06-09 06:14:34 UTC
Author: rth
Date: Sat Jun  9 06:14:27 2012
New Revision: 188356

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188356
Log:
PR c++/53602
        * combine-stack-adj.c (force_move_args_size_note): Add ARGS_SIZE
        note to a clobber insn when no other insn is available.

Added:
    branches/gcc-4_7-branch/gcc/testsuite/g++.dg/torture/pr53602.C
Modified:
    branches/gcc-4_7-branch/gcc/ChangeLog
    branches/gcc-4_7-branch/gcc/combine-stack-adj.c
Comment 11 Richard Henderson 2012-06-09 06:17:27 UTC
Author: rth
Date: Sat Jun  9 06:17:12 2012
New Revision: 188357

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188357
Log:
PR c++/53602
        * combine-stack-adj.c (force_move_args_size_note): Add ARGS_SIZE
        note to a clobber insn when no other insn is available.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/combine-stack-adj.c
Comment 12 Richard Henderson 2012-06-09 06:18:53 UTC
Author: rth
Date: Sat Jun  9 06:18:38 2012
New Revision: 188358

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188358
Log:
PR c++/53602

Added:
    trunk/gcc/testsuite/g++.dg/torture/pr53602.C
Comment 13 Richard Henderson 2012-06-09 16:27:59 UTC
Author: rth
Date: Sat Jun  9 16:27:52 2012
New Revision: 188360

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188360
Log:
PR c++/53602
        * cfgcleanup.c (execute_jump): Rename from rest_of_handle_jump2.
        (pass_jump): Rename from pass_jump2.
        (execute_jump2, pass_jump2): New.
        * combine-stack-adj.c (rest_of_handle_stack_adjustments): Don't
        perform cfg cleanup here.  Move the test of PUSH_ROUNDING
        and ACCUMULATE_OUTGOING_ARGS test...
        (gate_handle_stack_adjustments): ... here.
        * passes.c (init_optimization_passes): Update for pass_jump2 rename.
        Place new pass_jump2 after pass_stack_adjustments.
        * tree-pass.h (pass_jump): Declare.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cfgcleanup.c
    trunk/gcc/combine-stack-adj.c
    trunk/gcc/passes.c
    trunk/gcc/tree-pass.h
Comment 14 Andrew Benton 2012-06-11 15:00:41 UTC
Many thanks, Libre Office now compiles as expected. Should this bug be marked as fixed?
Comment 15 Jakub Jelinek 2012-06-11 15:14:54 UTC
Not yet, because it hasn't been fixed on the 4.7 branch yet.
Comment 16 Richard Henderson 2012-06-11 15:18:37 UTC
Yes it is fixed on the 4.7 branch.
Comment 17 Jakub Jelinek 2012-06-11 15:22:10 UTC
Oops, right you are.
Comment 18 Matthias Klose 2012-06-12 13:40:52 UTC
*** Bug 53644 has been marked as a duplicate of this bug. ***