This commit is contained in:
Jakub Jelinek 2012-10-09 14:00:55 +02:00
parent c7f844b164
commit 1db9652d3f
4 changed files with 13 additions and 159 deletions

1
.gitignore vendored
View File

@ -43,3 +43,4 @@
/gcc-4.7.2-20120920.tar.bz2
/gcc-4.7.2-20120921.tar.bz2
/gcc-4.7.2-20121001.tar.bz2
/gcc-4.7.2-20121009.tar.bz2

View File

@ -1,9 +1,9 @@
%global DATE 20121001
%global SVNREV 191896
%global DATE 20121009
%global SVNREV 192248
%global gcc_version 4.7.2
# Note, gcc_release must be integer, if you want to add suffixes to
# %{release}, append them after %{gcc_release} on Release: line.
%global gcc_release 3
%global gcc_release 4
%global _unpackaged_files_terminate_build 0
%global multilib_64_archs sparc64 ppc64 s390x x86_64
%ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@ -171,7 +171,6 @@ Patch0: gcc47-hack.patch
Patch1: gcc47-c++-builtin-redecl.patch
Patch2: gcc47-java-nomulti.patch
Patch3: gcc47-ppc32-retaddr.patch
Patch4: gcc47-pr33763.patch
Patch5: gcc47-rh330771.patch
Patch6: gcc47-i386-libgomp.patch
Patch7: gcc47-sparc-config-detection.patch
@ -668,7 +667,6 @@ package or when debugging this package.
%patch1 -p0 -b .c++-builtin-redecl~
%patch2 -p0 -b .java-nomulti~
%patch3 -p0 -b .ppc32-retaddr~
%patch4 -p0 -b .pr33763~
%patch5 -p0 -b .rh330771~
%patch6 -p0 -b .i386-libgomp~
%patch7 -p0 -b .sparc-config-detection~
@ -2663,6 +2661,14 @@ fi
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
%changelog
* Tue Oct 9 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-4
- update from the 4.7 branch
- PRs c++/54777, c++/54858, debug/53135, target/54741, target/54785,
target/54854
- backport of selected debug info quality improvements (#851467)
- PRs debug/48866, debug/52983, debug/53740, debug/53923, debug/54519,
debug/54551
* Mon Oct 1 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-3
- update from the 4.7 branch
- PRs target/54083, target/54703, target/54746, testsuite/54007

View File

@ -1,153 +0,0 @@
2007-11-06 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/33763
* gcc.dg/pr33763.c: New test.
* g++.dg/opt/inline13.C: New test.
2007-11-06 Jan Hubicka <jh@suse.cz>
PR tree-optimization/33763
* tree-inline.c (expand_call_inline): Silently ignore always_inline
attribute for redefined extern inline functions.
--- gcc/tree-inline.c.jj 2007-11-06 09:29:04.000000000 +0100
+++ gcc/tree-inline.c 2007-11-06 16:19:12.000000000 +0100
@@ -3817,6 +3817,12 @@ expand_call_inline (basic_block bb, gimp
goto egress;
if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
+ /* For extern inline functions that get redefined we always
+ silently ignored always_inline flag. Better behaviour would
+ be to be able to keep both bodies and use extern inline body
+ for inlining, but we can't do that because frontends overwrite
+ the body. */
+ && !cg_edge->callee->local.redefined_extern_inline
/* Avoid warnings during early inline pass. */
&& cgraph_global_info_ready
/* PR 20090218-1_0.c. Body can be provided by another module. */
--- gcc/testsuite/gcc.dg/pr33763.c.jj 2007-11-06 16:19:12.000000000 +0100
+++ gcc/testsuite/gcc.dg/pr33763.c 2007-11-06 16:19:12.000000000 +0100
@@ -0,0 +1,60 @@
+/* PR tree-optimization/33763 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef struct
+{
+ void *a;
+ void *b;
+} T;
+extern void *foo (const char *, const char *);
+extern void *bar (void *, const char *, T);
+extern int baz (const char *, int);
+
+extern inline __attribute__ ((always_inline, gnu_inline)) int
+baz (const char *x, int y)
+{
+ return 2;
+}
+
+int
+baz (const char *x, int y)
+{
+ return 1;
+}
+
+int xa, xb;
+
+static void *
+inl (const char *x, const char *y)
+{
+ T t = { &xa, &xb };
+ int *f = (int *) __builtin_malloc (sizeof (int));
+ const char *z;
+ int o = 0;
+ void *r = 0;
+
+ for (z = y; *z; z++)
+ {
+ if (*z == 'r')
+ o |= 1;
+ if (*z == 'w')
+ o |= 2;
+ }
+ if (o == 1)
+ *f = baz (x, 0);
+ if (o == 2)
+ *f = baz (x, 1);
+ if (o == 3)
+ *f = baz (x, 2);
+
+ if (o && *f > 0)
+ r = bar (f, "w", t);
+ return r;
+}
+
+void *
+foo (const char *x, const char *y)
+{
+ return inl (x, y);
+}
--- gcc/testsuite/g++.dg/opt/inline13.C.jj 2007-11-06 16:20:20.000000000 +0100
+++ gcc/testsuite/g++.dg/opt/inline13.C 2007-11-06 16:21:30.000000000 +0100
@@ -0,0 +1,60 @@
+// PR tree-optimization/33763
+// { dg-do compile }
+// { dg-options "-O2" }
+
+typedef struct
+{
+ void *a;
+ void *b;
+} T;
+extern void *foo (const char *, const char *);
+extern void *bar (void *, const char *, T);
+extern int baz (const char *, int);
+
+extern inline __attribute__ ((always_inline, gnu_inline)) int
+baz (const char *x, int y)
+{
+ return 2;
+}
+
+int
+baz (const char *x, int y)
+{
+ return 1;
+}
+
+int xa, xb;
+
+static void *
+inl (const char *x, const char *y)
+{
+ T t = { &xa, &xb };
+ int *f = (int *) __builtin_malloc (sizeof (int));
+ const char *z;
+ int o = 0;
+ void *r = 0;
+
+ for (z = y; *z; z++)
+ {
+ if (*z == 'r')
+ o |= 1;
+ if (*z == 'w')
+ o |= 2;
+ }
+ if (o == 1)
+ *f = baz (x, 0);
+ if (o == 2)
+ *f = baz (x, 1);
+ if (o == 3)
+ *f = baz (x, 2);
+
+ if (o && *f > 0)
+ r = bar (f, "w", t);
+ return r;
+}
+
+void *
+foo (const char *x, const char *y)
+{
+ return inl (x, y);
+}

View File

@ -1,2 +1,2 @@
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
b1167b144ac4c081d1fb68cfb95e2706 gcc-4.7.2-20121001.tar.bz2
57efcf9b68bb9f6e739a16f4673230d0 gcc-4.7.2-20121009.tar.bz2