OSDN Git Service

contrib/ChangeLog:
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 Jun 2010 00:23:06 +0000 (00:23 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 Jun 2010 00:23:06 +0000 (00:23 +0000)
* compare-debug: Drop LTO sections.
config/ChangeLog:
* bootstrap-lto.mk: New.
gcc/ChangeLog:
* doc/install.texi: Document bootstrap-lto.

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

config/ChangeLog
config/bootstrap-lto.mk [new file with mode: 0644]
contrib/ChangeLog
contrib/compare-debug
gcc/ChangeLog
gcc/doc/install.texi

index 78259e6..9d18d75 100644 (file)
@@ -1,3 +1,7 @@
+2010-06-20  Alexandre Oliva  <aoliva@redhat.com>
+
+       * bootstrap-lto.mk: New.
+
 2010-06-10  Paolo Bonzini  <bonzini@gnu.org>
 
        * override.m4: Remove obsolete (<2.64) definitions.
diff --git a/config/bootstrap-lto.mk b/config/bootstrap-lto.mk
new file mode 100644 (file)
index 0000000..14099a0
--- /dev/null
@@ -0,0 +1,8 @@
+# This option enables LTO for stage2 and stage3.  It requires lto to
+# be enabled for stage1 with --enable-stage1-languages.
+
+STAGE2_CFLAGS += -flto
+STAGE3_CFLAGS += -flto
+
+# Ada fails to build with LTO, turn it off for now.
+BOOT_ADAFLAGS += -fno-lto
index 5037767..1227153 100644 (file)
@@ -1,3 +1,7 @@
+2010-06-20  Alexandre Oliva  <aoliva@redhat.com>
+
+       * compare-debug: Drop LTO sections.
+
 2010-06-15  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
 
        * gcc_update: Support updating a git clone.
index 98c80f9..820721c 100755 (executable)
@@ -100,9 +100,11 @@ else
   done
 
   # If we found .eh_frame in one but not the other, or if we could not
-  # find a command to tell, try to strip off the .eh_frame section
-  # from both.
-  if test "x$cmp1" != "x$cmp2" || test "x$cmd" = "x"; then
+  # find a command to tell, or if there are LTO sections, try to strip
+  # off the .eh_frame and LTO sections from both.
+  if test "x$cmp1" != "x$cmp2" || test "x$cmd" = "x" ||
+     $cmd --section-headers "$1.$suf1" | grep '.gnu.lto_' > /dev/null ||
+     $cmd --section-headers "$2.$suf2" | grep '.gnu.lto_' > /dev/null ; then
     suf3=$suf1.
     while test -f "$1.$suf3"; do
       suf3=$suf3.
@@ -115,21 +117,27 @@ else
 
     trap 'rm -f "$1.$suf1" "$2.$suf2" "$1.$suf3" "$2.$suf4"' 0 1 2 15
 
-    echo stripping off .eh_frame, then retrying >&2
+    echo stripping off .eh_frame and LTO sections, then retrying >&2
+
+    seclist=".eh_frame .rel.eh_frame .rela.eh_frame"
+    if test "x$cmd" != "x"; then
+      seclist="$seclist "`{ $cmd --section-headers "$1.$suf1"; $cmd --section-headers "$2.$suf2"; } | sed -n 's,.* \(\.gnu\.lto_[^     ]*\).*,\1,p' | sort -u`
+    fi
+    rsopts=`for sec in $seclist; do echo " --remove-section $sec"; done`
 
     if (objcopy -v) 2>&1 | grep ' --remove-section' > /dev/null; then
-      objcopy --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$1.$suf1" "$1.$suf3"
+      objcopy $rsopts "$1.$suf1" "$1.$suf3"
       mv "$1.$suf3" "$1.$suf1"
 
-      objcopy --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$2.$suf2" "$2.$suf4"
+      objcopy $rsopts "$2.$suf2" "$2.$suf4"
       mv "$2.$suf4" "$2.$suf2"
     elif (strip --help) 2>&1 | grep ' --remove-section' > /dev/null; then
       cp "$1.$suf1" "$1.$suf3"
-      strip --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$1.$suf3"
+      strip $rsopts "$1.$suf3"
       mv "$1.$suf3" "$1.$suf1"
 
       cp "$2.$suf2" "$2.$suf4"
-      strip --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$2.$suf4"
+      strip $rsopts "$2.$suf4"
       mv "$2.$suf4" "$2.$suf2"
     else
       echo failed to strip off .eh_frame >&2
index f827fab..4895bb1 100644 (file)
@@ -1,5 +1,9 @@
 2010-06-20  Alexandre Oliva  <aoliva@redhat.com>
 
+       * doc/install.texi: Document bootstrap-lto.
+
+2010-06-20  Alexandre Oliva  <aoliva@redhat.com>
+
        PR debug/44248
        * lto-streamer-in.c (input_bb): Leave debug stmts alone.
        (input_function): Drop them here, if VTA is disabled.
index 9a15441..99077d7 100644 (file)
@@ -2150,6 +2150,11 @@ Removes any @option{-O}-started option from @code{BOOT_CFLAGS}, and adds
 @item @samp{bootstrap-O3}
 Analogous to @code{bootstrap-O1}.
 
+@item @samp{bootstrap-lto}
+Enables Link-Time Optimization for host tools during bootstrapping.
+@samp{BUILD_CONFIG=bootstrap-lto} is equivalent to adding
+@option{-flto} to @samp{BOOT_CFLAGS}.
+
 @item @samp{bootstrap-debug}
 Verifies that the compiler generates the same executable code, whether
 or not it is asked to emit debug information.  To this end, this