public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/58105] New: wrong code generation for multiversioned functions
@ 2013-08-08 16:13 bernd.edlinger at hotmail dot de
  2013-08-10  9:30 ` [Bug target/58105] " bernd.edlinger at hotmail dot de
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: bernd.edlinger at hotmail dot de @ 2013-08-08 16:13 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58105

            Bug ID: 58105
           Summary: wrong code generation for multiversioned functions
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bernd.edlinger at hotmail dot de

the following test cases fail on i686-*:
g++.dg/ext/mv2.C
g++.dg/ext/mv5.C
g++.dg/ext/mv12.C

The code is OK on -O0, -O1, but fails on -O2 and -O3.

The problem seems to be that for multiversioned functions 
an internal dispatcher function is generated by
ix86_generate_version_dispatcher_body(), which is being inlined in -O2
and above.

But the inlined function does no longer call the target-specific function.
Instead the return value is the address of the target-specific function.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/58105] wrong code generation for multiversioned functions
  2013-08-08 16:13 [Bug c++/58105] New: wrong code generation for multiversioned functions bernd.edlinger at hotmail dot de
@ 2013-08-10  9:30 ` bernd.edlinger at hotmail dot de
  2013-08-11  0:28 ` bernd.edlinger at hotmail dot de
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: bernd.edlinger at hotmail dot de @ 2013-08-10  9:30 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58105

Bernd Edlinger <bernd.edlinger at hotmail dot de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |i686*-*-*
          Component|c++                         |target

--- Comment #1 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
That is a pretty weird bug!

The backend generates a resolver function and an ifunc stub.
but the tree is somehow complete wrong.
Everything is good, until the optimizer inlines the resolver function
instead of the call to the ifunc stub.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/58105] wrong code generation for multiversioned functions
  2013-08-08 16:13 [Bug c++/58105] New: wrong code generation for multiversioned functions bernd.edlinger at hotmail dot de
  2013-08-10  9:30 ` [Bug target/58105] " bernd.edlinger at hotmail dot de
@ 2013-08-11  0:28 ` bernd.edlinger at hotmail dot de
  2013-08-14  1:19 ` bernd.edlinger at hotmail dot de
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: bernd.edlinger at hotmail dot de @ 2013-08-11  0:28 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58105

--- Comment #2 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
OK, this seems seems to be a possible fix:

--- i386.c.jj   2013-07-23 17:56:37.000000000 +0200
+++ i386.c      2013-08-11 01:41:38.000000000 +0200
@@ -29830,7 +29830,7 @@
   DECL_IGNORED_P (decl) = 0;
   /* IFUNC resolvers have to be externally visible.  */
   TREE_PUBLIC (decl) = 1;
-  DECL_UNINLINABLE (decl) = 0;
+  DECL_UNINLINABLE (decl) = 1;

   /* Resolver is not external, body is generated.  */
   DECL_EXTERNAL (decl) = 0;


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/58105] wrong code generation for multiversioned functions
  2013-08-08 16:13 [Bug c++/58105] New: wrong code generation for multiversioned functions bernd.edlinger at hotmail dot de
  2013-08-10  9:30 ` [Bug target/58105] " bernd.edlinger at hotmail dot de
  2013-08-11  0:28 ` bernd.edlinger at hotmail dot de
@ 2013-08-14  1:19 ` bernd.edlinger at hotmail dot de
  2013-08-14 15:01 ` bernd.edlinger at hotmail dot de
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: bernd.edlinger at hotmail dot de @ 2013-08-14  1:19 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58105

--- Comment #3 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
Patch was posted here: http://gcc.gnu.org/ml/gcc-patches/2013-08/msg00770.html


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/58105] wrong code generation for multiversioned functions
  2013-08-08 16:13 [Bug c++/58105] New: wrong code generation for multiversioned functions bernd.edlinger at hotmail dot de
                   ` (2 preceding siblings ...)
  2013-08-14  1:19 ` bernd.edlinger at hotmail dot de
@ 2013-08-14 15:01 ` bernd.edlinger at hotmail dot de
  2013-08-15  8:27 ` ubizjak at gmail dot com
  2013-08-16 13:24 ` ubizjak at gmail dot com
  5 siblings, 0 replies; 7+ messages in thread
From: bernd.edlinger at hotmail dot de @ 2013-08-14 15:01 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58105

--- Comment #4 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
Sorry to bother you...

With Richard's E-mail today he approved this patch.
Could you as i386-port maintainer please do the check-in for me?

Thanks.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/58105] wrong code generation for multiversioned functions
  2013-08-08 16:13 [Bug c++/58105] New: wrong code generation for multiversioned functions bernd.edlinger at hotmail dot de
                   ` (3 preceding siblings ...)
  2013-08-14 15:01 ` bernd.edlinger at hotmail dot de
@ 2013-08-15  8:27 ` ubizjak at gmail dot com
  2013-08-16 13:24 ` ubizjak at gmail dot com
  5 siblings, 0 replies; 7+ messages in thread
From: ubizjak at gmail dot com @ 2013-08-15  8:27 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58105

--- Comment #5 from Uroš Bizjak <ubizjak at gmail dot com> ---
Hello!

I am away from my keyboard for a couple of days, but I will take care
of your patch.

Thanks,
Uros.

On Wed, Aug 14, 2013 at 5:01 PM, bernd.edlinger at hotmail dot de
<gcc-bugzilla@gcc.gnu.org> wrote:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58105
>
> --- Comment #4 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
> Sorry to bother you...
>
> With Richard's E-mail today he approved this patch.
> Could you as i386-port maintainer please do the check-in for me?
>
> Thanks.
>
> --
> You are receiving this mail because:
> You are on the CC list for the bug.
>From gcc-bugs-return-427881-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Aug 15 12:04:55 2013
Return-Path: <gcc-bugs-return-427881-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 12223 invoked by alias); 15 Aug 2013 12:04:55 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 12187 invoked by uid 48); 15 Aug 2013 12:04:54 -0000
From: "jakub at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug regression/58165] [4.8/4.9 regression] internal compiler error: verify_flow_info
Date: Thu, 15 Aug 2013 12:04:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: regression
X-Bugzilla-Version: 4.8.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: jakub at gcc dot gnu.org
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.8.2
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_status cf_reconfirmed_on cc target_milestone everconfirmed
Message-ID: <bug-58165-4-Pv7zxRx1Ef@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-58165-4@http.gcc.gnu.org/bugzilla/>
References: <bug-58165-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2013-08/txt/msg00805.txt.bz2
Content-length: 754

http://gcc.gnu.org/bugzilla/show_bug.cgi?idX165

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2013-08-15
                 CC|                            |jakub at gcc dot gnu.org
   Target Milestone|---                         |4.8.2
     Ever confirmed|0                           |1

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Sounds like call-cdce bug to me.
Reduced testcase:
extern "C" float sqrtf (float);

struct A
{
  A ();
  ~A ();
};

void
foo (double d)
{
  A a;
  sqrtf (d);
}


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/58105] wrong code generation for multiversioned functions
  2013-08-08 16:13 [Bug c++/58105] New: wrong code generation for multiversioned functions bernd.edlinger at hotmail dot de
                   ` (4 preceding siblings ...)
  2013-08-15  8:27 ` ubizjak at gmail dot com
@ 2013-08-16 13:24 ` ubizjak at gmail dot com
  5 siblings, 0 replies; 7+ messages in thread
From: ubizjak at gmail dot com @ 2013-08-16 13:24 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="UTF-8", Size: 6873 bytes --]

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58105

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
                URL|                            |http://gcc.gnu.org/ml/gcc-p
                   |                            |atches/2013-08/msg00770.htm
                   |                            |l
         Resolution|---                         |FIXED
   Target Milestone|---                         |4.9.0

--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> ---
Author: uros
Date: Fri Aug 16 13:22:36 2013
New Revision: 201790

URL: http://gcc.gnu.org/viewcvs?rev=201790&root=gcc&view=rev
Log:
    PR target/58105
    * config/i386/i386.c (make_resolver_func): Set DECL_UNINLINABLE.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
>From gcc-bugs-return-427916-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Fri Aug 16 13:25:12 2013
Return-Path: <gcc-bugs-return-427916-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 21173 invoked by alias); 16 Aug 2013 13:25:12 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 21137 invoked by uid 48); 16 Aug 2013 13:25:11 -0000
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/58105] wrong code generation for multiversioned functions
Date: Fri, 16 Aug 2013 13:25:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 4.9.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ubizjak at gmail dot com
X-Bugzilla-Status: RESOLVED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.9.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-58105-4-c1OTq9RtKO@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-58105-4@http.gcc.gnu.org/bugzilla/>
References: <bug-58105-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2013-08/txt/msg00840.txt.bz2
Content-length: 128

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58105

--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> ---
Fixed.
>From gcc-bugs-return-427917-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Fri Aug 16 13:29:08 2013
Return-Path: <gcc-bugs-return-427917-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 24088 invoked by alias); 16 Aug 2013 13:29:07 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 24071 invoked by uid 48); 16 Aug 2013 13:29:06 -0000
From: "galtgendo at o2 dot pl" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/58174] New: gcc miscompiles code
Date: Fri, 16 Aug 2013 13:29:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: new
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: c++
X-Bugzilla-Version: 4.8.1
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: galtgendo at o2 dot pl
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter attachments.created
Message-ID: <bug-58174-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2013-08/txt/msg00841.txt.bz2
Content-length: 2206

http://gcc.gnu.org/bugzilla/show_bug.cgi?idX174

            Bug ID: 58174
           Summary: gcc miscompiles code
           Product: gcc
           Version: 4.8.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: galtgendo at o2 dot pl

Created attachment 30665
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id0665&actioníit
preprocessed file that miscompiles

Using built-in specs.
COLLECT_GCC=gcc-4.8.1
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.8.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.8.1/work/gcc-4.8.1/configure
--prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.8.1
--includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.1/include
--datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.8.1
--mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.8.1/man
--infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.8.1/info
--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.1/include/g++-v4
--host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec
--disable-fixed-point --with-cloog --disable-isl-version-check --enable-lto
--enable-nls --without-included-gettext --with-system-zlib --enable-obsolete
--disable-werror --enable-secureplt --enable-multilib
--with-multilib-list=m32,m64 --enable-libmudflap --disable-libssp
--enable-libgomp
--with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.8.1/python
--enable-checking=release --disable-libgcj --enable-libstdcxx-time
--enable-objc-gc --enable-languages=c,c++,objc,fortran --enable-shared
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
--enable-targets=all --with-bugurl=http://bugs.gentoo.org/
--with-pkgversion='Gentoo 4.8.1 p1.0, pie-0.5.6' --disable-libstdcxx-pch
Thread model: posix
gcc version 4.8.1 (Gentoo 4.8.1 p1.0, pie-0.5.6)

The command:
gc -DHAVE_INTTYPES=1 -O2 -Wall -Wextra -I/usr/include/SDL -I/usr/include/AL
-I/usr/include/libmodplug -o snd_flac.o -c snd_flac.cpp

Notes:
- even '-O' triggers the bug
- at '-O2', for whatever the reason, '-fno-guess-branch-probability' makes
things work


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-08-16 13:24 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-08 16:13 [Bug c++/58105] New: wrong code generation for multiversioned functions bernd.edlinger at hotmail dot de
2013-08-10  9:30 ` [Bug target/58105] " bernd.edlinger at hotmail dot de
2013-08-11  0:28 ` bernd.edlinger at hotmail dot de
2013-08-14  1:19 ` bernd.edlinger at hotmail dot de
2013-08-14 15:01 ` bernd.edlinger at hotmail dot de
2013-08-15  8:27 ` ubizjak at gmail dot com
2013-08-16 13:24 ` ubizjak at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).