Bug 20586 - bootstrap comparision fails with -funroll-loops.
Summary: bootstrap comparision fails with -funroll-loops.
Status: RESOLVED WONTFIX
Alias: None
Product: gcc
Classification: Unclassified
Component: rtl-optimization (show other bugs)
Version: 4.1.1
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: build, wrong-code
Depends on: 20365
Blocks: 28752 28784
  Show dependency treegraph
 
Reported: 2005-03-22 07:13 UTC by Pawel Sikora
Modified: 2006-10-22 17:17 UTC (History)
1 user (show)

See Also:
Host: i686, ppc, amd64
Target: i686, ppc, amd64
Build: i686, ppc, amd64
Known to work: 4.2.0
Known to fail: 4.1.2
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pawel Sikora 2005-03-22 07:13:22 UTC
In theory, the last two should stages produce the same results,   
which `make compare` can check.   
  
With CFLAGS:  
-march=i686 -mtune=pentium4 -O2 -fomit-frame-pointer -funroll-loops  
   
Comparing stage2 and stage3 of the compiler    
(...)    
Bootstrap comparison failure!    
./bb-reorder.o differs    
./builtins.o differs    
./caller-save.o differs    
./calls.o differs    
./combine.o differs    
./cse.o differs    
./ddg.o differs    
./dwarf2out.o differs    
./flow.o differs    
./global.o differs    
./loop.o differs    
./real.o differs    
./recog.o differs    
./reg-stack.o differs    
./regclass.o differs    
./regrename.o differs    
./reload.o differs    
./reload1.o differs    
./rtlanal.o differs    
./simplify-rtx.o differs    
./tree-dfa.o differs    
./tree-phinodes.o differs    
./tree-ssa-live.o differs    
./tree-ssa-loop-im.o differs    
./tree-ssa-loop-ivopts.o differs    
./tree-vect-transform.o differs    
ada/ali.o differs    
ada/binde.o differs    
ada/bindgen.o differs    
ada/checks.o differs    
ada/exp_aggr.o differs    
ada/exp_ch5.o differs    
ada/g-speche.o differs    
ada/inline.o differs    
ada/s-carun8.o differs    
ada/sem_case.o differs    
ada/sem_ch3.o differs    
ada/sem_ch8.o differs    
ada/sem_maps.o differs    
ada/tree_io.o differs    
ada/uintp.o differs    
cp/mangle.o differs    
cp/pt.o differs    
build/gensupport.o differs    
make[1]: *** [gnucompare] Error 1 
 
# gcc -v 
Reading specs from /usr/lib/gcc/i686-pld-linux/4.0.0/specs 
Target: i686-pld-linux 
Configured with: ../configure --prefix=/usr --libdir=/usr/lib 
--libexecdir=/usr/lib --infodir=/usr/share/info --mandir=/usr/share/man 
--enable-shared --enable-threads=posix --enable-__cxa_atexit 
--enable-languages=c,c++,ada,java --enable-c99 --enable-long-long 
--disable-multilib --enable-nls --with-gnu-as --with-gnu-ld 
--with-demangler-in-ld --with-system-zlib --with-slibdir=/lib --without-x 
--enable-cmath --enable-libgcj --enable-libgcj-multifile 
--enable-libgcj-database --enable-gtk-cairo i686-pld-linux 
Thread model: posix 
gcc version 4.0.0 20050319 (prerelease) (PLD Linux)
Comment 1 Pawel Sikora 2005-04-11 13:08:13 UTC
Problem still exists in 4.0.0-20050409 snap.
I've checked the i386.o and caller-save.o from stage2/3.
They have the same size but diff. instructions in several places.

--- stage2-i386.o.txt     2005-04-11 14:42:40.000000000 +0200
+++ stage3-i386.o.txt     2005-04-11 14:42:46.000000000 +0200
@@ -1,5 +1,5 @@

-stage2-i386.o:     file format elf32-i386
+stage3-i386.o:     file format elf32-i386

 Disassembly of section .text:

// split_di function

@@ -4948,7 +4948,7 @@
     4461:      89 42 fc                mov    %eax,0xfffffffc(%edx)
     4464:      8b 44 24 20             mov    0x20(%esp),%eax
     4468:      83 c0 01                add    $0x1,%eax
-    446b:      89 44 24 1c             mov    %eax,0x1c(%esp)
+    446b:      89 44 24 18             mov    %eax,0x18(%esp)
     446f:      8b 7c 24 24             mov    0x24(%esp),%edi
     4473:      83 ef 04                sub    $0x4,%edi
     4476:      89 7c 24 24             mov    %edi,0x24(%esp)
@@ -4956,7 +4956,7 @@
     447d:      89 f5                   mov    %esi,%ebp
     447f:      8b 54 24 28             mov    0x28(%esp),%edx
     4483:      83 ea 04                sub    $0x4,%edx
-    4486:      89 54 24 18             mov    %edx,0x18(%esp)
+    4486:      89 54 24 1c             mov    %edx,0x1c(%esp)
     448a:      8b 5a fc                mov    0xfffffffc(%edx),%ebx
     448d:      66 83 3b 27             cmpw   $0x27,(%ebx)
     4491:      0f 84 fe 00 00 00       je     4595 <split_di+0x25b>
@@ -4984,13 +4984,13 @@
     44e8:      c7 04 24 0c 00 00 00    movl   $0xc,(%esp)
     44ef:      e8 fc ff ff ff          call   44f0 <split_di+0x1b6>
     44f4:      89 47 fc                mov    %eax,0xfffffffc(%edi)
-    44f7:      8b 54 24 1c             mov    0x1c(%esp),%edx
+    44f7:      8b 54 24 18             mov    0x18(%esp),%edx
     44fb:      83 c2 01                add    $0x1,%edx
     44fe:      89 54 24 20             mov    %edx,0x20(%esp)
     4502:      83 ef 04                sub    $0x4,%edi
     4505:      89 7c 24 24             mov    %edi,0x24(%esp)
     4509:      8d 6e fc                lea    0xfffffffc(%esi),%ebp
-    450c:      8b 44 24 18             mov    0x18(%esp),%eax
+    450c:      8b 44 24 1c             mov    0x1c(%esp),%eax
     4510:      83 e8 04                sub    $0x4,%eax
     4513:      89 44 24 28             mov    %eax,0x28(%esp)
     4517:      8b 44 24 44             mov    0x44(%esp),%eax

// split_ti function

@@ -5144,7 +5144,7 @@
     474e:      89 42 fc                mov    %eax,0xfffffffc(%edx)
     4751:      8b 44 24 20             mov    0x20(%esp),%eax
     4755:      83 c0 01                add    $0x1,%eax
-    4758:      89 44 24 1c             mov    %eax,0x1c(%esp)
+    4758:      89 44 24 18             mov    %eax,0x18(%esp)
     475c:      8d 7d fc                lea    0xfffffffc(%ebp),%edi
     475f:      89 fd                   mov    %edi,%ebp
     4761:      8b 74 24 24             mov    0x24(%esp),%esi
@@ -5152,7 +5152,7 @@
     4768:      89 74 24 24             mov    %esi,0x24(%esp)
     476c:      8b 54 24 28             mov    0x28(%esp),%edx
     4770:      83 ea 04                sub    $0x4,%edx
-    4773:      89 54 24 18             mov    %edx,0x18(%esp)
+    4773:      89 54 24 1c             mov    %edx,0x1c(%esp)
     4777:      8b 5a fc                mov    0xfffffffc(%edx),%ebx
     477a:      66 83 3b 27             cmpw   $0x27,(%ebx)
     477e:      0f 84 e4 00 00 00       je     4868 <split_ti+0x20d>
@@ -5172,13 +5172,13 @@
     47bb:      c7 04 24 0d 00 00 00    movl   $0xd,(%esp)
     47c2:      e8 fc ff ff ff          call   47c3 <split_ti+0x168>
     47c7:      89 46 fc                mov    %eax,0xfffffffc(%esi)
-    47ca:      8b 54 24 1c             mov    0x1c(%esp),%edx
+    47ca:      8b 54 24 18             mov    0x18(%esp),%edx
     47ce:      83 c2 01                add    $0x1,%edx
     47d1:      89 54 24 20             mov    %edx,0x20(%esp)
     47d5:      8d 6f fc                lea    0xfffffffc(%edi),%ebp
     47d8:      83 ee 04                sub    $0x4,%esi
     47db:      89 74 24 24             mov    %esi,0x24(%esp)
-    47df:      8b 44 24 18             mov    0x18(%esp),%eax
+    47df:      8b 44 24 1c             mov    0x1c(%esp),%eax
     47e3:      83 e8 04                sub    $0x4,%eax
     47e6:      89 44 24 28             mov    %eax,0x28(%esp)
     47ea:      8b 44 24 44             mov    0x44(%esp),%eax
Comment 2 Pawel Sikora 2005-11-24 13:11:38 UTC
and another failure on 4.1 (rev 107414) on PPC:

Bootstrap comparison failure!
./alias.o differs
./builtins.o differs
./combine.o differs
./ddg.o differs
./function.o differs
./global.o differs
./modulo-sched.o differs
./recog.o differs
./sched-deps.o differs
./tree-into-ssa.o differs
./tree-outof-ssa.o differs
ada/osint.o differs
build/genautomata.o differs
build/genextract.o differs
build/genrecog.o differs
make[1]: *** [gnucompare] Error 1

--- 2   2005-11-24 12:54:59.486600992 +0000
+++ 3   2005-11-24 12:55:03.225032664 +0000
@@ -1,5 +1,5 @@

-alias.o.stage2:     file format elf32-powerpc
+alias.o.stage3:     file format elf32-powerpc

 Disassembly of section .text:

@@ -2934,23 +2934,23 @@
     2cac:      93 41 00 18     stw     r26,24(r1)
     2cb0:      3f 40 00 00     lis     r26,0
     2cb4:      93 81 00 20     stw     r28,32(r1)
-    2cb8:      3b 97 00 00     addi    r28,r23,0
+    2cb8:      3b 89 04 02     addi    r28,r9,1026
     2cbc:      93 a1 00 24     stw     r29,36(r1)
     2cc0:      3b a0 00 00     li      r29,0
     2cc4:      93 c1 00 28     stw     r30,40(r1)
-    2cc8:      3b c9 04 02     addi    r30,r9,1026
+    2cc8:      3b d7 00 00     addi    r30,r23,0
     2ccc:      93 61 00 1c     stw     r27,28(r1)
     2cd0:      93 e1 00 2c     stw     r31,44(r1)
     2cd4:      90 01 00 34     stw     r0,52(r1)
     2cd8:      48 00 01 14     b       2dec <init_alias_once+0x164>
     2cdc:      3b 7d ff fe     addi    r27,r29,-2
-    2ce0:      3b de 00 01     addi    r30,r30,1
+    2ce0:      3b 9c 00 01     addi    r28,r28,1
     2ce4:      2b 1b 00 07     cmplwi  cr6,r27,7
-    2ce8:      3b 9c 00 04     addi    r28,r28,4
+    2ce8:      3b de 00 04     addi    r30,r30,4
     2cec:      3b fd 00 01     addi    r31,r29,1
-    2cf0:      7f cb f3 78     mr      r11,r30
+    2cf0:      7f 8b e3 78     mr      r11,r28
     2cf4:      7f e4 fb 78     mr      r4,r31
-    2cf8:      7f 9b e3 78     mr      r27,r28
+    2cf8:      7f db f3 78     mr      r27,r30
     2cfc:      40 99 00 58     ble-    cr6,2d54 <init_alias_once+0xcc>
     2d00:      38 1d ff b2     addi    r0,r29,-78
     2d04:      28 00 00 0b     cmplwi  r0,11
@@ -2977,9 +2977,9 @@
     2d58:      2f 89 00 00     cmpwi   cr7,r9,0
     2d5c:      40 9e 01 38     bne-    cr7,2e94 <init_alias_once+0x20c>
     2d60:      38 9f ff fe     addi    r4,r31,-2
-    2d64:      39 7e 00 01     addi    r11,r30,1
+    2d64:      39 7c 00 01     addi    r11,r28,1
     2d68:      2b 04 00 07     cmplwi  cr6,r4,7
-    2d6c:      3b bc 00 04     addi    r29,r28,4
+    2d6c:      3b be 00 04     addi    r29,r30,4
     2d70:      38 9f 00 01     addi    r4,r31,1
     2d74:      40 99 00 58     ble-    cr6,2dcc <init_alias_once+0x144>
     2d78:      39 5f ff b2     addi    r10,r31,-78
@@ -3007,8 +3007,8 @@
     2dd0:      2f 88 00 00     cmpwi   cr7,r8,0
     2dd4:      40 9e 00 e0     bne-    cr7,2eb4 <init_alias_once+0x22c>
     2dd8:      2f 1f 00 70     cmpwi   cr6,r31,112
-    2ddc:      3b de 00 02     addi    r30,r30,2
-    2de0:      3b 9c 00 08     addi    r28,r28,8
+    2ddc:      3b 9c 00 02     addi    r28,r28,2
+    2de0:      3b de 00 08     addi    r30,r30,8
     2de4:      3b bf 00 02     addi    r29,r31,2
     2de8:      41 9a 00 fc     beq-    cr6,2ee4 <init_alias_once+0x25c>
     2dec:      38 7d ff fd     addi    r3,r29,-3
@@ -3035,7 +3035,7 @@
     2e40:      81 1a 00 00     lwz     r8,0(r26)
     2e44:      75 09 04 00     andis.  r9,r8,1024
     2e48:      40 a2 fe 94     bne-    2cdc <init_alias_once+0x54>
-    2e4c:      89 5e 00 00     lbz     r10,0(r30)
+    2e4c:      89 5c 00 00     lbz     r10,0(r28)
     2e50:      2c 8a 00 00     cmpwi   cr1,r10,0
     2e54:      41 86 fe 88     beq+    cr1,2cdc <init_alias_once+0x54>
     2e58:      7f a4 eb 78     mr      r4,r29
@@ -3045,7 +3045,7 @@
     2e68:      7c 65 1b 78     mr      r5,r3
     2e6c:      38 60 00 04     li      r3,4
     2e70:      48 00 00 01     bl      2e70 <init_alias_once+0x1e8>
-    2e74:      90 7c 00 00     stw     r3,0(r28)
+    2e74:      90 7e 00 00     stw     r3,0(r30)
     2e78:      4b ff fe 64     b       2cdc <init_alias_once+0x54>
     2e7c:      39 20 00 0d     li      r9,13
     2e80:      4b ff ff b4     b       2e34 <init_alias_once+0x1ac>
@@ -3062,7 +3062,7 @@
     2eac:      90 7b 00 00     stw     r3,0(r27)
     2eb0:      4b ff fe b0     b       2d60 <init_alias_once+0xd8>
     2eb4:      38 60 00 09     li      r3,9
-    2eb8:      3b de 00 02     addi    r30,r30,2
+    2eb8:      3b 9c 00 02     addi    r28,r28,2
     2ebc:      48 00 00 01     bl      2ebc <init_alias_once+0x234>
     2ec0:      38 80 00 00     li      r4,0
     2ec4:      7c 65 1b 78     mr      r5,r3
@@ -3070,7 +3070,7 @@
     2ecc:      48 00 00 01     bl      2ecc <init_alias_once+0x244>
     2ed0:      2f 1f 00 70     cmpwi   cr6,r31,112
     2ed4:      90 7d 00 00     stw     r3,0(r29)
-    2ed8:      3b 9c 00 08     addi    r28,r28,8
+    2ed8:      3b de 00 08     addi    r30,r30,8
     2edc:      3b bf 00 02     addi    r29,r31,2
     2ee0:      40 9a ff 0c     bne+    cr6,2dec <init_alias_once+0x164>
     2ee4:      3d 80 00 00     lis     r12,0

ix86 will be tested later...
Comment 3 Pawel Sikora 2006-01-23 15:26:34 UTC
current gcc-4.1 (rev. 110083) on my x86-64 box with
`-march=x86-64 -O2 -funroll-loops` fails too.

(enabled langs: c,c++)

Bootstrap comparison failure!
./c-format.o differs
./expmed.o differs
./i386.o differs
./reg-stack.o differs
./regclass.o differs
./reload1.o differs
./sbitmap.o differs
./simplify-rtx.o differs
./stmt.o differs
cp/search.o differs


i386.o diff:

--- stage2_i386.o.asm   2006-01-23 16:12:44.238663250 +0100
+++ stage3_i386.o.asm   2006-01-23 16:12:51.631125250 +0100
@@ -1,5 +1,5 @@

-stage2/i386.o:     file format elf64-x86-64
+i386.o:     file format elf64-x86-64

 Disassembly of section .text:

@@ -13461,10 +13461,10 @@
     b46b:      48 98                   cltq
     b46d:      41 55                   push   %r13
     b46f:      48 c1 e0 03             shl    $0x3,%rax
-    b473:      4c 8d 2c 01             lea    (%rcx,%rax,1),%r13
+    b473:      4c 8d 2c 02             lea    (%rdx,%rax,1),%r13
     b477:      4c 8d 34 07             lea    (%rdi,%rax,1),%r14
     b47b:      41 54                   push   %r12
-    b47d:      4c 8d 24 02             lea    (%rdx,%rax,1),%r12
+    b47d:      4c 8d 24 01             lea    (%rcx,%rax,1),%r12
     b481:      55                      push   %rbp
     b482:      53                      push   %rbx
     b483:      48 83 ec 08             sub    $0x8,%rsp
@@ -13480,7 +13480,7 @@
     b4ab:      0f 44 d3                cmove  %ebx,%edx
     b4ae:      31 c9                   xor    %ecx,%ecx
     b4b0:      e8 00 00 00 00          callq  b4b5 <split_di+0x55>
-    b4b5:      49 89 04 24             mov    %rax,(%r12)
+    b4b5:      49 89 45 00             mov    %rax,0x0(%r13)
     b4b9:      44 0f b6 45 02          movzbl 0x2(%rbp),%r8d
     b4be:      b9 04 00 00 00          mov    $0x4,%ecx
     b4c3:      48 89 ee                mov    %rbp,%rsi
@@ -13490,9 +13490,9 @@
     b4d0:      bf 0c 00 00 00          mov    $0xc,%edi
     b4d5:      89 da                   mov    %ebx,%edx
     b4d7:      e8 00 00 00 00          callq  b4dc <split_di+0x7c>
-    b4dc:      49 89 45 00             mov    %rax,0x0(%r13)
-    b4e0:      49 83 ec 08             sub    $0x8,%r12
-    b4e4:      49 83 ed 08             sub    $0x8,%r13
+    b4dc:      49 89 04 24             mov    %rax,(%r12)
+    b4e0:      49 83 ed 08             sub    $0x8,%r13
+    b4e4:      49 83 ec 08             sub    $0x8,%r12
     b4e8:      49 83 ee 08             sub    $0x8,%r14
     b4ec:      41 ff cf                dec    %r15d
     b4ef:      41 83 ff ff             cmp    $0xffffffffffffffff,%r15d
@@ -13509,7 +13509,7 @@
     b51f:      0f 44 d3                cmove  %ebx,%edx
     b522:      31 c9                   xor    %ecx,%ecx
     b524:      e8 00 00 00 00          callq  b529 <split_di+0xc9>
-    b529:      49 89 04 24             mov    %rax,(%r12)
+    b529:      49 89 45 00             mov    %rax,0x0(%r13)
     b52d:      0f b6 4d 02             movzbl 0x2(%rbp),%ecx
     b531:      48 89 ee                mov    %rbp,%rsi
     b534:      bf 0c 00 00 00          mov    $0xc,%edi
@@ -13519,9 +13519,9 @@
     b543:      0f 45 da                cmovne %edx,%ebx
     b546:      89 da                   mov    %ebx,%edx
     b548:      e8 00 00 00 00          callq  b54d <split_di+0xed>
-    b54d:      49 89 45 00             mov    %rax,0x0(%r13)
-    b551:      49 83 ec 08             sub    $0x8,%r12
-    b555:      49 83 ed 08             sub    $0x8,%r13
+    b54d:      49 89 04 24             mov    %rax,(%r12)
+    b551:      49 83 ed 08             sub    $0x8,%r13
+    b555:      49 83 ec 08             sub    $0x8,%r12
     b559:      49 83 ee 08             sub    $0x8,%r14
     b55d:      49 8b 2e                mov    (%r14),%rbp
     b560:      41 ff cf                dec    %r15d
@@ -13534,13 +13534,13 @@
     b580:      48 89 ef                mov    %rbp,%rdi
     b583:      e8 00 00 00 00          callq  b588 <split_di+0x128>
     b588:      41 b8 01 00 00 00       mov    $0x1,%r8d
-    b58e:      49 89 04 24             mov    %rax,(%r12)
+    b58e:      49 89 45 00             mov    %rax,0x0(%r13)
     b592:      b9 01 00 00 00          mov    $0x1,%ecx
     b597:      ba 04 00 00 00          mov    $0x4,%edx
     b59c:      be 0c 00 00 00          mov    $0xc,%esi
     b5a1:      48 89 ef                mov    %rbp,%rdi
     b5a4:      e8 00 00 00 00          callq  b5a9 <split_di+0x149>
-    b5a9:      49 89 45 00             mov    %rax,0x0(%r13)
+    b5a9:      49 89 04 24             mov    %rax,(%r12)
     b5ad:      e9 2e ff ff ff          jmpq   b4e0 <split_di+0x80>
     b5b2:      41 b8 01 00 00 00       mov    $0x1,%r8d
     b5b8:      b9 01 00 00 00          mov    $0x1,%ecx
@@ -13549,13 +13549,13 @@
     b5c4:      48 89 ef                mov    %rbp,%rdi
     b5c7:      e8 00 00 00 00          callq  b5cc <split_di+0x16c>
     b5cc:      41 b8 01 00 00 00       mov    $0x1,%r8d
-    b5d2:      49 89 04 24             mov    %rax,(%r12)
+    b5d2:      49 89 45 00             mov    %rax,0x0(%r13)
     b5d6:      b9 01 00 00 00          mov    $0x1,%ecx
     b5db:      ba 04 00 00 00          mov    $0x4,%edx
     b5e0:      be 0c 00 00 00          mov    $0xc,%esi
     b5e5:      48 89 ef                mov    %rbp,%rdi
     b5e8:      e8 00 00 00 00          callq  b5ed <split_di+0x18d>
-    b5ed:      49 89 45 00             mov    %rax,0x0(%r13)
+    b5ed:      49 89 04 24             mov    %rax,(%r12)
     b5f1:      e9 5b ff ff ff          jmpq   b551 <split_di+0xf1>
     b5f6:      48 83 c4 08             add    $0x8,%rsp
     b5fa:      5b                      pop    %rbx
Comment 4 Pawel Sikora 2006-02-27 10:55:27 UTC
still present in 4.1.0-RC2.
moreover I see new differences in branch opcodes.

--- gcc-stage2.asm      2006-02-27 11:49:00.850323750 +0100
+++ gcc-stage3.asm      2006-02-27 11:49:05.446611000 +0100
@@ -1,5 +1,5 @@
 
-gcc-stage2.o:     file format elf64-x86-64
+gcc-stage3.o:     file format elf64-x86-64
 
 Disassembly of section .text:
 
@@ -12848,7 +12848,7 @@
     bb87:      80 fa 2a                cmp    $0x2a,%dl
     bb8a:      48 89 dd                mov    %rbx,%rbp
     bb8d:      c6 44 24 6d 00          movb   $0x0,0x6d(%rsp)
-    bb92:      0f 84 10 04 00 00       je     bfa8 <handle_braces+0x4e8>
+    bb92:      0f 84 0b 04 00 00       je     bfa3 <handle_braces+0x4e3>
     bb98:      0f b6 4d 00             movzbl 0x0(%rbp),%ecx
     bb9c:      80 f9 09                cmp    $0x9,%cl
     bb9f:      41 0f 94 c0             sete   %r8b
@@ -12911,7 +12911,7 @@
     bc70:      40 0a b4 24 90 00 00    or     0x90(%rsp),%sil
     bc77:      00 
     bc78:      88 8c 24 a0 00 00 00    mov    %cl,0xa0(%rsp)
-    bc7f:      0f 84 31 03 00 00       je     bfb6 <handle_braces+0x4f6>
+    bc7f:      0f 84 2c 03 00 00       je     bfb1 <handle_braces+0x4f1>
     bc85:      c6 44 24 6f 00          movb   $0x0,0x6f(%rsp)
     bc8a:      80 7d 00 3a             cmpb   $0x3a,0x0(%rbp)
     bc8e:      0f 84 7b 06 00 00       je     c30f <handle_braces+0x84f>
@@ -12956,7 +12956,7 @@
     bd24:      45 85 f6                test   %r14d,%r14d
     bd27:      44 89 bc 24 bc 00 00    mov    %r15d,0xbc(%rsp)
     bd2e:      00 
-    bd2f:      0f 8e 57 02 00 00       jle    bf8c <handle_braces+0x4cc>
+    bd2f:      0f 8e 52 02 00 00       jle    bf87 <handle_braces+0x4c7>
     bd35:      48 8b 1d 00 00 00 00    mov    0(%rip),%rbx        # bd3c <handle_braces+0x27c>
     bd3c:      44 8b bc 24 c0 00 00    mov    0xc0(%rsp),%r15d
     bd43:      00 
@@ -12985,7 +12985,7 @@
     bd8f:      41 ff c5                inc    %r13d
     bd92:      44 3b ac 24 c0 00 00    cmp    0xc0(%rsp),%r13d
     bd99:      00 
-    bd9a:      0f 84 ec 01 00 00       je     bf8c <handle_braces+0x4cc>
+    bd9a:      0f 84 e7 01 00 00       je     bf87 <handle_braces+0x4c7>
     bda0:      45 85 ff                test   %r15d,%r15d
     bda3:      0f 84 e5 00 00 00       je     be8e <handle_braces+0x3ce>
     bda9:      41 83 ff 01             cmp    $0x1,%r15d
@@ -13055,7 +13055,7 @@
     be7c:      48 83 c3 18             add    $0x18,%rbx
     be80:      44 3b ac 24 c0 00 00    cmp    0xc0(%rsp),%r13d
     be87:      00 
-    be88:      0f 84 fe 00 00 00       je     bf8c <handle_braces+0x4cc>
+    be88:      0f 84 f9 00 00 00       je     bf87 <handle_braces+0x4c7>
     be8e:      4c 8b 3b                mov    (%rbx),%r15
     be91:      4c 89 f2                mov    %r14,%rdx
     be94:      4c 89 e6                mov    %r12,%rsi
@@ -13070,206 +13070,206 @@
     beb9:      4c 8d 7b 18             lea    0x18(%rbx),%r15
     bebd:      41 ff c5                inc    %r13d
     bec0:      4c 89 f2                mov    %r14,%rdx
-    bec3:      44 89 6c 24 40          mov    %r13d,0x40(%rsp)
+    bec3:      44 89 6c 24 3c          mov    %r13d,0x3c(%rsp)
     bec8:      4c 89 e6                mov    %r12,%rsi
     becb:      49 8b 1f                mov    (%r15),%rbx
-    bece:      4c 89 7c 24 38          mov    %r15,0x38(%rsp)
+    bece:      4c 89 7c 24 30          mov    %r15,0x30(%rsp)
     bed3:      48 89 df                mov    %rbx,%rdi
     bed6:      e8 00 00 00 00          callq  bedb <handle_braces+0x41b>
     bedb:      85 c0                   test   %eax,%eax
     bedd:      75 17                   jne    bef6 <handle_braces+0x436>
     bedf:      80 7c 24 6d 00          cmpb   $0x0,0x6d(%rsp)
-    bee4:      0f 85 b9 03 00 00       jne    c2a3 <handle_braces+0x7e3>
+    bee4:      0f 85 b8 03 00 00       jne    c2a2 <handle_braces+0x7e2>
     beea:      42 80 3c 33 00          cmpb   $0x0,(%rbx,%r14,1)
     beef:      90                      nop    
-    bef0:      0f 84 ad 03 00 00       je     c2a3 <handle_braces+0x7e3>
-    bef6:      4d 8d 4f 18             lea    0x18(%r15),%r9
-    befa:      45 8d 55 01             lea    0x1(%r13),%r10d
+    bef0:      0f 84 ac 03 00 00       je     c2a2 <handle_braces+0x7e2>
+    bef6:      49 8d 7f 18             lea    0x18(%r15),%rdi
+    befa:      41 8d 5d 01             lea    0x1(%r13),%ebx
     befe:      4c 89 f2                mov    %r14,%rdx
     bf01:      4c 89 e6                mov    %r12,%rsi
-    bf04:      49 8b 19                mov    (%r9),%rbx
-    bf07:      44 89 54 24 20          mov    %r10d,0x20(%rsp)
-    bf0c:      4c 89 4c 24 18          mov    %r9,0x18(%rsp)
-    bf11:      48 89 df                mov    %rbx,%rdi
-    bf14:      e8 00 00 00 00          callq  bf19 <handle_braces+0x459>
-    bf19:      85 c0                   test   %eax,%eax
-    bf1b:      75 19                   jne    bf36 <handle_braces+0x476>
-    bf1d:      80 7c 24 6d 00          cmpb   $0x0,0x6d(%rsp)
-    bf22:      0f 85 a1 03 00 00       jne    c2c9 <handle_braces+0x809>
-    bf28:      42 80 3c 33 00          cmpb   $0x0,(%rbx,%r14,1)
+    bf04:      89 5c 24 18             mov    %ebx,0x18(%rsp)
+    bf08:      48 8b 1f                mov    (%rdi),%rbx
+    bf0b:      48 89 7c 24 10          mov    %rdi,0x10(%rsp)
+    bf10:      48 89 df                mov    %rbx,%rdi
+    bf13:      e8 00 00 00 00          callq  bf18 <handle_braces+0x458>
+    bf18:      85 c0                   test   %eax,%eax
+    bf1a:      75 1a                   jne    bf36 <handle_braces+0x476>
+    bf1c:      80 7c 24 6d 00          cmpb   $0x0,0x6d(%rsp)
+    bf21:      0f 85 a1 03 00 00       jne    c2c8 <handle_braces+0x808>
+    bf27:      42 80 3c 33 00          cmpb   $0x0,(%rbx,%r14,1)
+    bf2c:      66                      data16
     bf2d:      66                      data16
     bf2e:      66                      data16
     bf2f:      90                      nop    
-    bf30:      0f 84 93 03 00 00       je     c2c9 <handle_braces+0x809>
-    bf36:      49 8d 7f 30             lea    0x30(%r15),%rdi
-    bf3a:      41 8d 5d 02             lea    0x2(%r13),%ebx
-    bf3e:      4c 89 f2                mov    %r14,%rdx
-    bf41:      4c 89 e6                mov    %r12,%rsi
-    bf44:      89 5c 24 14             mov    %ebx,0x14(%rsp)
-    bf48:      48 8b 1f                mov    (%rdi),%rbx
-    bf4b:      48 89 7c 24 08          mov    %rdi,0x8(%rsp)
-    bf50:      48 89 df                mov    %rbx,%rdi
-    bf53:      e8 00 00 00 00          callq  bf58 <handle_braces+0x498>
-    bf58:      85 c0                   test   %eax,%eax
-    bf5a:      75 1a                   jne    bf76 <handle_braces+0x4b6>
-    bf5c:      80 7c 24 6d 00          cmpb   $0x0,0x6d(%rsp)
-    bf61:      0f 85 15 03 00 00       jne    c27c <handle_braces+0x7bc>
-    bf67:      42 80 3c 33 00          cmpb   $0x0,(%rbx,%r14,1)
-    bf6c:      66                      data16
-    bf6d:      66                      data16
-    bf6e:      66                      data16
-    bf6f:      90                      nop    
-    bf70:      0f 84 06 03 00 00       je     c27c <handle_braces+0x7bc>
-    bf76:      41 83 c5 03             add    $0x3,%r13d
-    bf7a:      44 3b ac 24 c0 00 00    cmp    0xc0(%rsp),%r13d
-    bf81:      00 
-    bf82:      49 8d 5f 48             lea    0x48(%r15),%rbx
-    bf86:      0f 85 02 ff ff ff       jne    be8e <handle_braces+0x3ce>
-    bf8c:      c6 44 24 6f 00          movb   $0x0,0x6f(%rsp)
-    bf91:      c6 44 24 70 01          movb   $0x1,0x70(%rsp)
-    bf96:      80 7d 00 7d             cmpb   $0x7d,0x0(%rbp)
-    bf9a:      0f 84 d8 05 00 00       je     c578 <handle_braces+0xab8>
-    bfa0:      48 ff c5                inc    %rbp
-    bfa3:      e9 05 fd ff ff          jmpq   bcad <handle_braces+0x1ed>
-    bfa8:      48 8d 6b 01             lea    0x1(%rbx),%rbp
-    bfac:      c6 44 24 6d 01          movb   $0x1,0x6d(%rsp)
-    bfb1:      e9 e2 fb ff ff          jmpq   bb98 <handle_braces+0xd8>
-    bfb6:      84 c0                   test   %al,%al
-    bfb8:      0f 85 86 04 00 00       jne    c444 <handle_braces+0x984>
-    bfbe:      89 d8                   mov    %ebx,%eax
-    bfc0:      44 29 e0                sub    %r12d,%eax
-    bfc3:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
-    bfc8:      89 84 24 c4 00 00 00    mov    %eax,0xc4(%rsp)
-    bfcf:      75 0b                   jne    bfdc <handle_braces+0x51c>
-    bfd1:      c7 84 24 c4 00 00 00    movl   $0xffffffff,0xc4(%rsp)
-    bfd8:      ff ff ff ff 
-    bfdc:      44 8b 0d 00 00 00 00    mov    0(%rip),%r9d        # bfe3 <handle_braces+0x523>
-    bfe3:      45 85 c9                test   %r9d,%r9d
-    bfe6:      44 89 8c 24 c8 00 00    mov    %r9d,0xc8(%rsp)
-    bfed:      00 
-    bfee:      0f 8e 81 02 00 00       jle    c275 <handle_braces+0x7b5>
-    bff4:      4c 8b 1d 00 00 00 00    mov    0(%rip),%r11        # bffb <handle_braces+0x53b>
-    bffb:      44 8b bc 24 c8 00 00    mov    0xc8(%rsp),%r15d
-    c002:      00 
-    c003:      4c 63 f0                movslq %eax,%r14
-    c006:      4c 89 f2                mov    %r14,%rdx
-    c009:      4c 89 e6                mov    %r12,%rsi
-    c00c:      4d 8b 2b                mov    (%r11),%r13
-    c00f:      41 ff cf                dec    %r15d
-    c012:      4c 89 9c 24 d8 00 00    mov    %r11,0xd8(%rsp)
-    c019:      00 
-    c01a:      41 83 e7 03             and    $0x3,%r15d
-    c01e:      4c 89 ef                mov    %r13,%rdi
-    c021:      e8 00 00 00 00          callq  c026 <handle_braces+0x566>
-    c026:      85 c0                   test   %eax,%eax
-    c028:      75 17                   jne    c041 <handle_braces+0x581>
-    c02a:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
-    c02f:      0f 85 96 04 00 00       jne    c4cb <handle_braces+0xa0b>
-    c035:      43 80 7c 35 00 00       cmpb   $0x0,0x0(%r13,%r14,1)
-    c03b:      0f 84 8a 04 00 00       je     c4cb <handle_braces+0xa0b>
-    c041:      48 8b 8c 24 d8 00 00    mov    0xd8(%rsp),%rcx
-    c048:      00 
-    c049:      45 31 ed                xor    %r13d,%r13d
-    c04c:      41 ff c5                inc    %r13d
-    c04f:      48 83 c1 18             add    $0x18,%rcx
-    c053:      44 39 ac 24 c8 00 00    cmp    %r13d,0xc8(%rsp)
-    c05a:      00 
-    c05b:      48 89 4c 24 30          mov    %rcx,0x30(%rsp)
-    c060:      0f 84 0f 02 00 00       je     c275 <handle_braces+0x7b5>
-    c066:      45 85 ff                test   %r15d,%r15d
-    c069:      0f 84 c0 00 00 00       je     c12f <handle_braces+0x66f>
-    c06f:      41 83 ff 01             cmp    $0x1,%r15d
-    c073:      74 73                   je     c0e8 <handle_braces+0x628>
-    c075:      41 83 ff 02             cmp    $0x2,%r15d
-    c079:      74 34                   je     c0af <handle_braces+0x5ef>
-    c07b:      4c 8b 39                mov    (%rcx),%r15
-    c07e:      4c 89 f2                mov    %r14,%rdx
-    c081:      4c 89 e6                mov    %r12,%rsi
-    c084:      4c 89 ff                mov    %r15,%rdi
-    c087:      e8 00 00 00 00          callq  c08c <handle_braces+0x5cc>
-    c08c:      85 c0                   test   %eax,%eax
-    c08e:      75 16                   jne    c0a6 <handle_braces+0x5e6>
-    c090:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
-    c095:      0f 85 48 04 00 00       jne    c4e3 <handle_braces+0xa23>
-    c09b:      43 80 3c 37 00          cmpb   $0x0,(%r15,%r14,1)
-    c0a0:      0f 84 3d 04 00 00       je     c4e3 <handle_braces+0xa23>
-    c0a6:      48 83 44 24 30 18       addq   $0x18,0x30(%rsp)
-    c0ac:      41 ff c5                inc    %r13d
-    c0af:      48 8b 44 24 30          mov    0x30(%rsp),%rax
-    c0b4:      4c 89 f2                mov    %r14,%rdx
-    c0b7:      4c 89 e6                mov    %r12,%rsi
-    c0ba:      4c 8b 38                mov    (%rax),%r15
-    c0bd:      4c 89 ff                mov    %r15,%rdi
-    c0c0:      e8 00 00 00 00          callq  c0c5 <handle_braces+0x605>
-    c0c5:      85 c0                   test   %eax,%eax
-    c0c7:      75 16                   jne    c0df <handle_braces+0x61f>
-    c0c9:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
-    c0ce:      0f 85 2c 04 00 00       jne    c500 <handle_braces+0xa40>
-    c0d4:      43 80 3c 37 00          cmpb   $0x0,(%r15,%r14,1)
-    c0d9:      0f 84 21 04 00 00       je     c500 <handle_braces+0xa40>
-    c0df:      48 83 44 24 30 18       addq   $0x18,0x30(%rsp)
-    c0e5:      41 ff c5                inc    %r13d
-    c0e8:      48 8b 54 24 30          mov    0x30(%rsp),%rdx
-    c0ed:      4c 89 e6                mov    %r12,%rsi
-    c0f0:      4c 8b 3a                mov    (%rdx),%r15
-    c0f3:      4c 89 f2                mov    %r14,%rdx
-    c0f6:      4c 89 ff                mov    %r15,%rdi
-    c0f9:      e8 00 00 00 00          callq  c0fe <handle_braces+0x63e>
-    c0fe:      85 c0                   test   %eax,%eax
-    c100:      75 16                   jne    c118 <handle_braces+0x658>
-    c102:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
-    c107:      0f 85 a0 03 00 00       jne    c4ad <handle_braces+0x9ed>
-    c10d:      43 80 3c 37 00          cmpb   $0x0,(%r15,%r14,1)
-    c112:      0f 84 95 03 00 00       je     c4ad <handle_braces+0x9ed>
-    c118:      41 ff c5                inc    %r13d
-    c11b:      48 83 44 24 30 18       addq   $0x18,0x30(%rsp)
-    c121:      44 39 ac 24 c8 00 00    cmp    %r13d,0xc8(%rsp)
-    c128:      00 
-    c129:      0f 84 46 01 00 00       je     c275 <handle_braces+0x7b5>
-    c12f:      4c 8b 54 24 30          mov    0x30(%rsp),%r10
-    c134:      4c 89 f2                mov    %r14,%rdx
-    c137:      4c 89 e6                mov    %r12,%rsi
-    c13a:      4d 8b 3a                mov    (%r10),%r15
-    c13d:      4c 89 ff                mov    %r15,%rdi
-    c140:      e8 00 00 00 00          callq  c145 <handle_braces+0x685>
-    c145:      85 c0                   test   %eax,%eax
-    c147:      75 25                   jne    c16e <handle_braces+0x6ae>
-    c149:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
-    c14e:      75 07                   jne    c157 <handle_braces+0x697>
-    c150:      43 80 3c 37 00          cmpb   $0x0,(%r15,%r14,1)
-    c155:      75 17                   jne    c16e <handle_braces+0x6ae>
-    c157:      8b b4 24 c4 00 00 00    mov    0xc4(%rsp),%esi
-    c15e:      44 89 ef                mov    %r13d,%edi
-    c161:      e8 ba 5d ff ff          callq  1f20 <check_live_switch>
-    c166:      85 c0                   test   %eax,%eax
-    c168:      0f 85 56 03 00 00       jne    c4c4 <handle_braces+0xa04>
-    c16e:      4c 8b 7c 24 30          mov    0x30(%rsp),%r15
-    c173:      41 ff c5                inc    %r13d
-    c176:      4c 89 f2                mov    %r14,%rdx
-    c179:      44 89 6c 24 44          mov    %r13d,0x44(%rsp)
-    c17e:      44 89 6c 24 2c          mov    %r13d,0x2c(%rsp)
-    c183:      4c 89 e6                mov    %r12,%rsi
-    c186:      49 83 c7 18             add    $0x18,%r15
-    c18a:      4d 8b 2f                mov    (%r15),%r13
-    c18d:      4c 89 ef                mov    %r13,%rdi
-    c190:      e8 00 00 00 00          callq  c195 <handle_braces+0x6d5>
-    c195:      85 c0                   test   %eax,%eax
-    c197:      75 27                   jne    c1c0 <handle_braces+0x700>
-    c199:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
-    c19e:      75 08                   jne    c1a8 <handle_braces+0x6e8>
-    c1a0:      43 80 7c 35 00 00       cmpb   $0x0,0x0(%r13,%r14,1)
-    c1a6:      75 18                   jne    c1c0 <handle_braces+0x700>
-    c1a8:      8b b4 24 c4 00 00 00    mov    0xc4(%rsp),%esi
-    c1af:      8b 7c 24 2c             mov    0x2c(%rsp),%edi
-    c1b3:      e8 68 5d ff ff          callq  1f20 <check_live_switch>
-    c1b8:      85 c0                   test   %eax,%eax
-    c1ba:      0f 85 04 03 00 00       jne    c4c4 <handle_braces+0xa04>
-    c1c0:      44 8b 6c 24 44          mov    0x44(%rsp),%r13d
-    c1c5:      4c 89 f2                mov    %r14,%rdx
-    c1c8:      4c 89 e6                mov    %r12,%rsi
-    c1cb:      41 ff c5                inc    %r13d
-    c1ce:      44 89 6c 24 28          mov    %r13d,0x28(%rsp)
-    c1d3:      4d 8b 6f 18             mov    0x18(%r15),%r13
+    bf30:      0f 84 92 03 00 00       je     c2c8 <handle_braces+0x808>
+    bf36:      49 8d 47 30             lea    0x30(%r15),%rax
+    bf3a:      41 8d 55 02             lea    0x2(%r13),%edx
+    bf3e:      4c 89 e6                mov    %r12,%rsi
+    bf41:      48 8b 18                mov    (%rax),%rbx
+    bf44:      89 54 24 0c             mov    %edx,0xc(%rsp)
+    bf48:      4c 89 f2                mov    %r14,%rdx
+    bf4b:      48 89 04 24             mov    %rax,(%rsp)
+    bf4f:      48 89 df                mov    %rbx,%rdi
+    bf52:      e8 00 00 00 00          callq  bf57 <handle_braces+0x497>
+    bf57:      85 c0                   test   %eax,%eax
+    bf59:      75 16                   jne    bf71 <handle_braces+0x4b1>
+    bf5b:      80 7c 24 6d 00          cmpb   $0x0,0x6d(%rsp)
+    bf60:      0f 85 16 03 00 00       jne    c27c <handle_braces+0x7bc>
+    bf66:      42 80 3c 33 00          cmpb   $0x0,(%rbx,%r14,1)
+    bf6b:      0f 84 0b 03 00 00       je     c27c <handle_braces+0x7bc>
+    bf71:      41 83 c5 03             add    $0x3,%r13d
+    bf75:      44 3b ac 24 c0 00 00    cmp    0xc0(%rsp),%r13d
+    bf7c:      00 
+    bf7d:      49 8d 5f 48             lea    0x48(%r15),%rbx
+    bf81:      0f 85 07 ff ff ff       jne    be8e <handle_braces+0x3ce>
+    bf87:      c6 44 24 6f 00          movb   $0x0,0x6f(%rsp)
+    bf8c:      c6 44 24 70 01          movb   $0x1,0x70(%rsp)
+    bf91:      80 7d 00 7d             cmpb   $0x7d,0x0(%rbp)
+    bf95:      0f 84 dd 05 00 00       je     c578 <handle_braces+0xab8>
+    bf9b:      48 ff c5                inc    %rbp
+    bf9e:      e9 0a fd ff ff          jmpq   bcad <handle_braces+0x1ed>
+    bfa3:      48 8d 6b 01             lea    0x1(%rbx),%rbp
+    bfa7:      c6 44 24 6d 01          movb   $0x1,0x6d(%rsp)
+    bfac:      e9 e7 fb ff ff          jmpq   bb98 <handle_braces+0xd8>
+    bfb1:      84 c0                   test   %al,%al
+    bfb3:      0f 85 8b 04 00 00       jne    c444 <handle_braces+0x984>
+    bfb9:      89 d8                   mov    %ebx,%eax
+    bfbb:      44 29 e0                sub    %r12d,%eax
+    bfbe:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
+    bfc3:      89 84 24 c4 00 00 00    mov    %eax,0xc4(%rsp)
+    bfca:      75 0b                   jne    bfd7 <handle_braces+0x517>
+    bfcc:      c7 84 24 c4 00 00 00    movl   $0xffffffff,0xc4(%rsp)
+    bfd3:      ff ff ff ff 
+    bfd7:      44 8b 0d 00 00 00 00    mov    0(%rip),%r9d        # bfde <handle_braces+0x51e>
+    bfde:      45 85 c9                test   %r9d,%r9d
+    bfe1:      44 89 8c 24 c8 00 00    mov    %r9d,0xc8(%rsp)
+    bfe8:      00 
+    bfe9:      0f 8e 86 02 00 00       jle    c275 <handle_braces+0x7b5>
+    bfef:      4c 8b 1d 00 00 00 00    mov    0(%rip),%r11        # bff6 <handle_braces+0x536>
+    bff6:      44 8b bc 24 c8 00 00    mov    0xc8(%rsp),%r15d
+    bffd:      00 
+    bffe:      4c 63 f0                movslq %eax,%r14
+    c001:      4c 89 f2                mov    %r14,%rdx
+    c004:      4c 89 e6                mov    %r12,%rsi
+    c007:      4d 8b 2b                mov    (%r11),%r13
+    c00a:      41 ff cf                dec    %r15d
+    c00d:      4c 89 9c 24 d8 00 00    mov    %r11,0xd8(%rsp)
+    c014:      00 
+    c015:      41 83 e7 03             and    $0x3,%r15d
+    c019:      4c 89 ef                mov    %r13,%rdi
+    c01c:      e8 00 00 00 00          callq  c021 <handle_braces+0x561>
+    c021:      85 c0                   test   %eax,%eax
+    c023:      75 17                   jne    c03c <handle_braces+0x57c>
+    c025:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
+    c02a:      0f 85 9b 04 00 00       jne    c4cb <handle_braces+0xa0b>
+    c030:      43 80 7c 35 00 00       cmpb   $0x0,0x0(%r13,%r14,1)
+    c036:      0f 84 8f 04 00 00       je     c4cb <handle_braces+0xa0b>
+    c03c:      48 8b 8c 24 d8 00 00    mov    0xd8(%rsp),%rcx
+    c043:      00 
+    c044:      45 31 ed                xor    %r13d,%r13d
+    c047:      41 ff c5                inc    %r13d
+    c04a:      48 83 c1 18             add    $0x18,%rcx
+    c04e:      44 39 ac 24 c8 00 00    cmp    %r13d,0xc8(%rsp)
+    c055:      00 
+    c056:      48 89 4c 24 28          mov    %rcx,0x28(%rsp)
+    c05b:      0f 84 14 02 00 00       je     c275 <handle_braces+0x7b5>
+    c061:      45 85 ff                test   %r15d,%r15d
+    c064:      0f 84 c3 00 00 00       je     c12d <handle_braces+0x66d>
+    c06a:      41 83 ff 01             cmp    $0x1,%r15d
+    c06e:      74 73                   je     c0e3 <handle_braces+0x623>
+    c070:      41 83 ff 02             cmp    $0x2,%r15d
+    c074:      74 34                   je     c0aa <handle_braces+0x5ea>
+    c076:      4c 8b 39                mov    (%rcx),%r15
+    c079:      4c 89 f2                mov    %r14,%rdx
+    c07c:      4c 89 e6                mov    %r12,%rsi
+    c07f:      4c 89 ff                mov    %r15,%rdi
+    c082:      e8 00 00 00 00          callq  c087 <handle_braces+0x5c7>
+    c087:      85 c0                   test   %eax,%eax
+    c089:      75 16                   jne    c0a1 <handle_braces+0x5e1>
+    c08b:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
+    c090:      0f 85 4d 04 00 00       jne    c4e3 <handle_braces+0xa23>
+    c096:      43 80 3c 37 00          cmpb   $0x0,(%r15,%r14,1)
+    c09b:      0f 84 42 04 00 00       je     c4e3 <handle_braces+0xa23>
+    c0a1:      48 83 44 24 28 18       addq   $0x18,0x28(%rsp)
+    c0a7:      41 ff c5                inc    %r13d
+    c0aa:      48 8b 44 24 28          mov    0x28(%rsp),%rax
+    c0af:      4c 89 f2                mov    %r14,%rdx
+    c0b2:      4c 89 e6                mov    %r12,%rsi
+    c0b5:      4c 8b 38                mov    (%rax),%r15
+    c0b8:      4c 89 ff                mov    %r15,%rdi
+    c0bb:      e8 00 00 00 00          callq  c0c0 <handle_braces+0x600>
+    c0c0:      85 c0                   test   %eax,%eax
+    c0c2:      75 16                   jne    c0da <handle_braces+0x61a>
+    c0c4:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
+    c0c9:      0f 85 31 04 00 00       jne    c500 <handle_braces+0xa40>
+    c0cf:      43 80 3c 37 00          cmpb   $0x0,(%r15,%r14,1)
+    c0d4:      0f 84 26 04 00 00       je     c500 <handle_braces+0xa40>
+    c0da:      48 83 44 24 28 18       addq   $0x18,0x28(%rsp)
+    c0e0:      41 ff c5                inc    %r13d
+    c0e3:      48 8b 54 24 28          mov    0x28(%rsp),%rdx
+    c0e8:      4c 89 e6                mov    %r12,%rsi
+    c0eb:      4c 8b 3a                mov    (%rdx),%r15
+    c0ee:      4c 89 f2                mov    %r14,%rdx
+    c0f1:      4c 89 ff                mov    %r15,%rdi
+    c0f4:      e8 00 00 00 00          callq  c0f9 <handle_braces+0x639>
+    c0f9:      85 c0                   test   %eax,%eax
+    c0fb:      75 19                   jne    c116 <handle_braces+0x656>
+    c0fd:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
+    c102:      0f 85 a5 03 00 00       jne    c4ad <handle_braces+0x9ed>
+    c108:      43 80 3c 37 00          cmpb   $0x0,(%r15,%r14,1)
+    c10d:      66                      data16
+    c10e:      66                      data16
+    c10f:      90                      nop    
+    c110:      0f 84 97 03 00 00       je     c4ad <handle_braces+0x9ed>
+    c116:      41 ff c5                inc    %r13d
+    c119:      48 83 44 24 28 18       addq   $0x18,0x28(%rsp)
+    c11f:      44 39 ac 24 c8 00 00    cmp    %r13d,0xc8(%rsp)
+    c126:      00 
+    c127:      0f 84 48 01 00 00       je     c275 <handle_braces+0x7b5>
+    c12d:      4c 8b 54 24 28          mov    0x28(%rsp),%r10
+    c132:      4c 89 f2                mov    %r14,%rdx
+    c135:      4c 89 e6                mov    %r12,%rsi
+    c138:      4d 8b 3a                mov    (%r10),%r15
+    c13b:      4c 89 ff                mov    %r15,%rdi
+    c13e:      e8 00 00 00 00          callq  c143 <handle_braces+0x683>
+    c143:      85 c0                   test   %eax,%eax
+    c145:      75 25                   jne    c16c <handle_braces+0x6ac>
+    c147:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
+    c14c:      75 07                   jne    c155 <handle_braces+0x695>
+    c14e:      43 80 3c 37 00          cmpb   $0x0,(%r15,%r14,1)
+    c153:      75 17                   jne    c16c <handle_braces+0x6ac>
+    c155:      8b b4 24 c4 00 00 00    mov    0xc4(%rsp),%esi
+    c15c:      44 89 ef                mov    %r13d,%edi
+    c15f:      e8 bc 5d ff ff          callq  1f20 <check_live_switch>
+    c164:      85 c0                   test   %eax,%eax
+    c166:      0f 85 58 03 00 00       jne    c4c4 <handle_braces+0xa04>
+    c16c:      4c 8b 44 24 28          mov    0x28(%rsp),%r8
+    c171:      45 8d 7d 01             lea    0x1(%r13),%r15d
+    c175:      4c 89 f2                mov    %r14,%rdx
+    c178:      4c 89 e6                mov    %r12,%rsi
+    c17b:      44 89 7c 24 24          mov    %r15d,0x24(%rsp)
+    c180:      49 83 c0 18             add    $0x18,%r8
+    c184:      4d 8b 28                mov    (%r8),%r13
+    c187:      4c 89 44 24 40          mov    %r8,0x40(%rsp)
+    c18c:      4c 89 ef                mov    %r13,%rdi
+    c18f:      e8 00 00 00 00          callq  c194 <handle_braces+0x6d4>
+    c194:      85 c0                   test   %eax,%eax
+    c196:      75 27                   jne    c1bf <handle_braces+0x6ff>
+    c198:      80 7c 24 57 00          cmpb   $0x0,0x57(%rsp)
+    c19d:      75 08                   jne    c1a7 <handle_braces+0x6e7>
+    c19f:      43 80 7c 35 00 00       cmpb   $0x0,0x0(%r13,%r14,1)
+    c1a5:      75 18                   jne    c1bf <handle_braces+0x6ff>
+    c1a7:      8b b4 24 c4 00 00 00    mov    0xc4(%rsp),%esi
+    c1ae:      8b 7c 24 24             mov    0x24(%rsp),%edi
+    c1b2:      e8 69 5d ff ff          callq  1f20 <check_live_switch>
+    c1b7:      85 c0                   test   %eax,%eax
+    c1b9:      0f 85 05 03 00 00       jne    c4c4 <handle_braces+0xa04>
+    c1bf:      48 8b 74 24 40          mov    0x40(%rsp),%rsi
+    c1c4:      45 8d 6f 01             lea    0x1(%r15),%r13d
+    c1c8:      4c 89 f2                mov    %r14,%rdx
+    c1cb:      44 89 6c 24 20          mov    %r13d,0x20(%rsp)
+    c1d0:      4c 8b 6e 18             mov    0x18(%rsi),%r13
+    c1d4:      4c 89 e6                mov    %r12,%rsi
     c1d7:      4c 89 ef                mov    %r13,%rdi
     c1da:      e8 00 00 00 00          callq  c1df <handle_braces+0x71f>
     c1df:      85 c0                   test   %eax,%eax
@@ -13279,17 +13279,17 @@
     c1ea:      43 80 7c 35 00 00       cmpb   $0x0,0x0(%r13,%r14,1)
     c1f0:      75 18                   jne    c20a <handle_braces+0x74a>
     c1f2:      8b b4 24 c4 00 00 00    mov    0xc4(%rsp),%esi
-    c1f9:      8b 7c 24 28             mov    0x28(%rsp),%edi
+    c1f9:      8b 7c 24 20             mov    0x20(%rsp),%edi
     c1fd:      e8 1e 5d ff ff          callq  1f20 <check_live_switch>
     c202:      85 c0                   test   %eax,%eax
     c204:      0f 85 ba 02 00 00       jne    c4c4 <handle_braces+0xa04>
-    c20a:      44 8b 44 24 44          mov    0x44(%rsp),%r8d
-    c20f:      4d 8b 6f 30             mov    0x30(%r15),%r13
+    c20a:      4c 8b 4c 24 40          mov    0x40(%rsp),%r9
+    c20f:      45 8d 57 02             lea    0x2(%r15),%r10d
     c213:      4c 89 f2                mov    %r14,%rdx
     c216:      4c 89 e6                mov    %r12,%rsi
-    c219:      41 83 c0 02             add    $0x2,%r8d
-    c21d:      4c 89 ef                mov    %r13,%rdi
-    c220:      44 89 44 24 24          mov    %r8d,0x24(%rsp)
+    c219:      44 89 54 24 1c          mov    %r10d,0x1c(%rsp)
+    c21e:      4d 8b 69 30             mov    0x30(%r9),%r13
+    c222:      4c 89 ef                mov    %r13,%rdi
     c225:      e8 00 00 00 00          callq  c22a <handle_braces+0x76a>
     c22a:      85 c0                   test   %eax,%eax
     c22c:      75 27                   jne    c255 <handle_braces+0x795>
@@ -13298,42 +13298,42 @@
     c235:      43 80 7c 35 00 00       cmpb   $0x0,0x0(%r13,%r14,1)
     c23b:      75 18                   jne    c255 <handle_braces+0x795>
     c23d:      8b b4 24 c4 00 00 00    mov    0xc4(%rsp),%esi
-    c244:      8b 7c 24 24             mov    0x24(%rsp),%edi
+    c244:      8b 7c 24 1c             mov    0x1c(%rsp),%edi
     c248:      e8 d3 5c ff ff          callq  1f20 <check_live_switch>
     c24d:      85 c0                   test   %eax,%eax
     c24f:      0f 85 6f 02 00 00       jne    c4c4 <handle_braces+0xa04>
-    c255:      44 8b 6c 24 44          mov    0x44(%rsp),%r13d
-    c25a:      49 83 c7 48             add    $0x48,%r15
-    c25e:      4c 89 7c 24 30          mov    %r15,0x30(%rsp)
-    c263:      41 83 c5 03             add    $0x3,%r13d
-    c267:      44 39 ac 24 c8 00 00    cmp    %r13d,0xc8(%rsp)
-    c26e:      00 
-    c26f:      0f 85 ba fe ff ff       jne    c12f <handle_braces+0x66f>
+    c255:      45 8d 6f 03             lea    0x3(%r15),%r13d
+    c259:      4c 8b 7c 24 40          mov    0x40(%rsp),%r15
+    c25e:      49 83 c7 48             add    $0x48,%r15
+    c262:      44 39 ac 24 c8 00 00    cmp    %r13d,0xc8(%rsp)
+    c269:      00 
+    c26a:      4c 89 7c 24 28          mov    %r15,0x28(%rsp)
+    c26f:      0f 85 b8 fe ff ff       jne    c12d <handle_braces+0x66d>
     c275:      31 c0                   xor    %eax,%eax
     c277:      e9 0b 02 00 00          jmpq   c487 <handle_braces+0x9c7>
     c27c:      8b b4 24 bc 00 00 00    mov    0xbc(%rsp),%esi
-    c283:      8b 7c 24 14             mov    0x14(%rsp),%edi
+    c283:      8b 7c 24 0c             mov    0xc(%rsp),%edi
     c287:      e8 94 5c ff ff          callq  1f20 <check_live_switch>
     c28c:      85 c0                   test   %eax,%eax
-    c28e:      0f 84 e2 fc ff ff       je     bf76 <handle_braces+0x4b6>
-    c294:      4c 8b 5c 24 08          mov    0x8(%rsp),%r11
-    c299:      41 c6 43 15 01          movb   $0x1,0x15(%r11)
-    c29e:      e9 d3 fc ff ff          jmpq   bf76 <handle_braces+0x4b6>
-    c2a3:      8b b4 24 bc 00 00 00    mov    0xbc(%rsp),%esi
-    c2aa:      8b 7c 24 40             mov    0x40(%rsp),%edi
-    c2ae:      e8 6d 5c ff ff          callq  1f20 <check_live_switch>
-    c2b3:      85 c0                   test   %eax,%eax
-    c2b5:      0f 84 3b fc ff ff       je     bef6 <handle_braces+0x436>
-    c2bb:      48 8b 74 24 38          mov    0x38(%rsp),%rsi
-    c2c0:      c6 46 15 01             movb   $0x1,0x15(%rsi)
-    c2c4:      e9 2d fc ff ff          jmpq   bef6 <handle_braces+0x436>
-    c2c9:      8b b4 24 bc 00 00 00    mov    0xbc(%rsp),%esi
-    c2d0:      8b 7c 24 20             mov    0x20(%rsp),%edi
-    c2d4:      e8 47 5c ff ff          callq  1f20 <check_live_switch>
-    c2d9:      85 c0                   test   %eax,%eax
-    c2db:      0f 84 55 fc ff ff       je     bf36 <handle_braces+0x476>
-    c2e1:      48 8b 4c 24 18          mov    0x18(%rsp),%rcx
-    c2e6:      c6 41 15 01             movb   $0x1,0x15(%rcx)
+    c28e:      0f 84 dd fc ff ff       je     bf71 <handle_braces+0x4b1>
+    c294:      4c 8b 04 24             mov    (%rsp),%r8
+    c298:      41 c6 40 15 01          movb   $0x1,0x15(%r8)
+    c29d:      e9 cf fc ff ff          jmpq   bf71 <handle_braces+0x4b1>
+    c2a2:      8b b4 24 bc 00 00 00    mov    0xbc(%rsp),%esi
+    c2a9:      8b 7c 24 3c             mov    0x3c(%rsp),%edi
+    c2ad:      e8 6e 5c ff ff          callq  1f20 <check_live_switch>
+    c2b2:      85 c0                   test   %eax,%eax
+    c2b4:      0f 84 3c fc ff ff       je     bef6 <handle_braces+0x436>
+    c2ba:      48 8b 4c 24 30          mov    0x30(%rsp),%rcx
+    c2bf:      c6 41 15 01             movb   $0x1,0x15(%rcx)
+    c2c3:      e9 2e fc ff ff          jmpq   bef6 <handle_braces+0x436>
+    c2c8:      8b b4 24 bc 00 00 00    mov    0xbc(%rsp),%esi
+    c2cf:      8b 7c 24 18             mov    0x18(%rsp),%edi
+    c2d3:      e8 48 5c ff ff          callq  1f20 <check_live_switch>
+    c2d8:      85 c0                   test   %eax,%eax
+    c2da:      0f 84 56 fc ff ff       je     bf36 <handle_braces+0x476>
+    c2e0:      4c 8b 5c 24 10          mov    0x10(%rsp),%r11
+    c2e5:      41 c6 43 15 01          movb   $0x1,0x15(%r11)
     c2ea:      e9 47 fc ff ff          jmpq   bf36 <handle_braces+0x476>
     c2ef:      8b b4 24 bc 00 00 00    mov    0xbc(%rsp),%esi
     c2f6:      44 89 ef                mov    %r13d,%edi
@@ -13418,7 +13418,7 @@
     c418:      01 
     c419:      c6 84 24 ba 00 00 00    movb   $0x1,0xba(%rsp)
     c420:      01 
-    c421:      e9 7a fb ff ff          jmpq   bfa0 <handle_braces+0x4e0>
+    c421:      e9 75 fb ff ff          jmpq   bf9b <handle_braces+0x4db>
     c426:      48 ff c3                inc    %rbx
     c429:      80 3b 2a                cmpb   $0x2a,(%rbx)
     c42c:      41 0f 94 c7             sete   %r15b
@@ -13454,20 +13454,20 @@
     c4b4:      44 89 ef                mov    %r13d,%edi
     c4b7:      e8 64 5a ff ff          callq  1f20 <check_live_switch>
     c4bc:      85 c0                   test   %eax,%eax
-    c4be:      0f 84 54 fc ff ff       je     c118 <handle_braces+0x658>
+    c4be:      0f 84 52 fc ff ff       je     c116 <handle_braces+0x656>
     c4c4:      b8 01 00 00 00          mov    $0x1,%eax
     c4c9:      eb bc                   jmp    c487 <handle_braces+0x9c7>
     c4cb:      8b b4 24 c4 00 00 00    mov    0xc4(%rsp),%esi
     c4d2:      31 ff                   xor    %edi,%edi
     c4d4:      e8 47 5a ff ff          callq  1f20 <check_live_switch>
     c4d9:      85 c0                   test   %eax,%eax
-    c4db:      0f 84 60 fb ff ff       je     c041 <handle_braces+0x581>
+    c4db:      0f 84 5b fb ff ff       je     c03c <handle_braces+0x57c>
     c4e1:      eb e1                   jmp    c4c4 <handle_braces+0xa04>
     c4e3:      8b b4 24 c4 00 00 00    mov    0xc4(%rsp),%esi
     c4ea:      44 89 ef                mov    %r13d,%edi
     c4ed:      e8 2e 5a ff ff          callq  1f20 <check_live_switch>
     c4f2:      85 c0                   test   %eax,%eax
-    c4f4:      0f 84 ac fb ff ff       je     c0a6 <handle_braces+0x5e6>
+    c4f4:      0f 84 a7 fb ff ff       je     c0a1 <handle_braces+0x5e1>
     c4fa:      eb c8                   jmp    c4c4 <handle_braces+0xa04>
     c4fc:      66                      data16
     c4fd:      66                      data16
@@ -13477,7 +13477,7 @@
     c507:      44 89 ef                mov    %r13d,%edi
     c50a:      e8 11 5a ff ff          callq  1f20 <check_live_switch>
     c50f:      85 c0                   test   %eax,%eax
-    c511:      0f 84 c8 fb ff ff       je     c0df <handle_braces+0x61f>
+    c511:      0f 84 c3 fb ff ff       je     c0da <handle_braces+0x61a>
     c517:      eb ab                   jmp    c4c4 <handle_braces+0xa04>
     c519:      66                      data16
     c51a:      66                      data16
Comment 5 Pawel Sikora 2006-04-16 20:43:40 UTC
gcc-4.1.1 (rev. 112984) boostraped sucessfully on my
box with `-march=x86-64 -O2 -funroll-loops` now :)
Comment 6 Steven Bosscher 2006-04-24 22:32:30 UTC
Works for me.  Works for the reporter.  I say this works.
Comment 7 Pawel Sikora 2006-05-01 10:31:44 UTC
4.1.1-20060501 (rev. 113407) fails again.

[ i686 ]

./c-format.o differs
./combine.o differs
./global.o differs
./i386.o differs
./ipa-cp.o differs
./loop.o differs
./modulo-sched.o differs
./reg-stack.o differs
./regclass.o differs
./reload1.o differs
./simplify-rtx.o differs
./toplev.o differs
./tree-data-ref.o differs
./tree-into-ssa.o differs
./tree-outof-ssa.o differs
ada/erroutc.o differs
ada/restrict.o differs
ada/s-casuti.o differs
ada/sem_maps.o differs
cp/call.o differs
cp/pt.o differs
fortran/symbol.o differs
java/class.o differs
build/genautomata.o differs

[ ppc ]

./builtins.o differs
./caller-save.o differs
./ddg.o differs
./flow.o differs
./global.o differs
./modulo-sched.o differs
./real.o differs
./recog.o differs
./regrename.o differs
./reload.o differs
./reload1.o differs
./sched-deps.o differs
./simplify-rtx.o differs
./tree-into-ssa.o differs
ada/exp_dbug.o differs
ada/osint.o differs
ada/treepr.o differs
java/jcf-write.o differs
build/genrecog.o differs

[ x86-64 ]

./c-format.o differs
./i386.o differs
./reg-stack.o differs
./reload1.o differs
./simplify-rtx.o differs
./stmt.o differs
ada/bcheck.o differs
cp/search.o differs

e.g.:

-reg-stack-stage2.o:     file format elf64-x86-64
+reg-stack-stage3.o:     file format elf64-x86-64

 Disassembly of section .text:

@@ -4111,8 +4111,8 @@
     38ac:      bf 00 00 00 00          mov    $0x0,%edi
     38b1:      e8 00 00 00 00          callq  38b6 <change_stack+0xcf6>
     38b6:      41 8d 7f ff             lea    0xffffffffffffffff(%r15),%edi
-    38ba:      4c 8d 56 ff             lea    0xffffffffffffffff(%rsi),%r10
-    38be:      4d 8d 48 ff             lea    0xffffffffffffffff(%r8),%r9
+    38ba:      4c 8d 4e ff             lea    0xffffffffffffffff(%rsi),%r9
+    38be:      4d 8d 50 ff             lea    0xffffffffffffffff(%r8),%r10
     38c2:      48 63 cf                movslq %edi,%rcx
     38c5:      48 8b 3c 24             mov    (%rsp),%rdi
     38c9:      49 8d 2c 08             lea    (%r8,%rcx,1),%rbp
@@ -4121,10 +4121,10 @@
     38d4:      44 0f b6 24 2f          movzbl (%rdi,%rbp,1),%r12d
     38d9:      46 38 24 2f             cmp    %r12b,(%rdi,%r13,1)
     38dd:      75 c3                   jne    38a2 <change_stack+0xce2>
-    38df:      4d 8d 24 09             lea    (%r9,%rcx,1),%r12
-    38e3:      49 8d 04 0a             lea    (%r10,%rcx,1),%rax
-    38e7:      4c 8d 4e fe             lea    0xfffffffffffffffe(%rsi),%r9
-    38eb:      4d 8d 50 fe             lea    0xfffffffffffffffe(%r8),%r10
+    38df:      4d 8d 24 0a             lea    (%r10,%rcx,1),%r12
+    38e3:      49 8d 04 09             lea    (%r9,%rcx,1),%rax
+    38e7:      4d 8d 50 fe             lea    0xfffffffffffffffe(%r8),%r10
+    38eb:      4c 8d 4e fe             lea    0xfffffffffffffffe(%rsi),%r9
     38ef:      42 0f b6 14 27          movzbl (%rdi,%r12,1),%edx
     38f4:      38 14 07                cmp    %dl,(%rdi,%rax,1)
     38f7:      75 a9                   jne    38a2 <change_stack+0xce2>
Comment 8 Pawel Sikora 2006-08-09 09:45:15 UTC
works fine with 4.2.0-20060806 rev. 115974 on x86-64.
current 4.1.2 build in progress...
Comment 9 Pawel Sikora 2006-08-09 10:36:04 UTC
the only "C" bootstrap still shows failures for 4.1.2.

Bootstrap comparison failure!
./c-format.o differs
./combine.o differs
./expmed.o differs
./global.o differs
./i386.o differs
./reg-stack.o differs
./regclass.o differs
./reload1.o differs
./sbitmap.o differs
./simplify-rtx.o differs
Comment 10 Pawel Sikora 2006-10-22 17:17:16 UTC
i will no longer test the 4.1 branch.
for me it's closed with /dontcare.