public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/35553]  New: -fkeep-inline-functions and -O errors out in SSE headers
@ 2008-03-12 14:48 gpiez at web dot de
  2008-03-12 14:50 ` [Bug c++/35553] " gpiez at web dot de
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: gpiez at web dot de @ 2008-03-12 14:48 UTC (permalink / raw)
  To: gcc-bugs

#include <xmmintrin.h>

int main(int argc, char** argv) {
        return 0;
}

---

If compiled with g++ -O -fkeep-inline-functions, this errors out with 

/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1-pre20080306/include/emmintrin.h: In
function &#8216;long long int __vector__ _mm_shuffle_epi32(long long int
__vector__, int)&#8217;:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1-pre20080306/include/emmintrin.h:1382:
error: mask must be an immediate
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1-pre20080306/include/emmintrin.h: In
function &#8216;long long int __vector__ _mm_shufflelo_epi16(long long int
__vector__, int)&#8217;:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1-pre20080306/include/emmintrin.h:1376:
error: mask must be an immediate
...
and much more lines to follow.

This did not happen with 4.2.3. I am not able to make sure there are no bogus
headers on the host involved, so I attached the preprocessed source.


-- 
           Summary: -fkeep-inline-functions and -O errors out in SSE headers
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: gpiez at web dot de
 GCC build triplet: x86_64-pc-linux-gnu
  GCC host triplet: x86_64-pc-linux-gnu
GCC target triplet: x86_64-pc-linux-gnu


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


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

* [Bug c++/35553] -fkeep-inline-functions and -O errors out in SSE headers
  2008-03-12 14:48 [Bug c++/35553] New: -fkeep-inline-functions and -O errors out in SSE headers gpiez at web dot de
@ 2008-03-12 14:50 ` gpiez at web dot de
  2008-03-12 18:34 ` ubizjak at gmail dot com
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: gpiez at web dot de @ 2008-03-12 14:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from gpiez at web dot de  2008-03-12 14:49 -------
Created an attachment (id=15303)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15303&action=view)
preprocessed source


-- 


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


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

* [Bug c++/35553] -fkeep-inline-functions and -O errors out in SSE headers
  2008-03-12 14:48 [Bug c++/35553] New: -fkeep-inline-functions and -O errors out in SSE headers gpiez at web dot de
  2008-03-12 14:50 ` [Bug c++/35553] " gpiez at web dot de
@ 2008-03-12 18:34 ` ubizjak at gmail dot com
  2008-03-13  9:51 ` uros at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: ubizjak at gmail dot com @ 2008-03-12 18:34 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from ubizjak at gmail dot com  2008-03-12 18:33 -------
I guess we should use something like:

Index: i386.h
===================================================================
--- i386.h      (revision 133145)
+++ i386.h      (working copy)
@@ -691,6 +691,10 @@
        builtin_define ("__SSE_MATH__");                        \
       if (TARGET_SSE_MATH && TARGET_SSE2)                      \
        builtin_define ("__SSE2_MATH__");                       \
+                                                               \
+      /* Define inline functions with immediate arguments.  */ \
+      if (optimize && !flag_keep_inline_functions)             \
+       builtin_define ("__SSE_USE_INLINED_FUNC__");            \
     }                                                          \
   while (0)


In addition to this change, every #ifdef __OPTIMIZE__ should be changed to
#ifdef __SSE_USE__INLINED_FUNC__ through MMX/SSE include files.


-- 

ubizjak at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |ubizjak at gmail dot com
                   |dot org                     |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-03-12 18:33:33
               date|                            |


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


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

* [Bug c++/35553] -fkeep-inline-functions and -O errors out in SSE headers
  2008-03-12 14:48 [Bug c++/35553] New: -fkeep-inline-functions and -O errors out in SSE headers gpiez at web dot de
  2008-03-12 14:50 ` [Bug c++/35553] " gpiez at web dot de
  2008-03-12 18:34 ` ubizjak at gmail dot com
@ 2008-03-13  9:51 ` uros at gcc dot gnu dot org
  2008-03-13 13:35 ` uros at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: uros at gcc dot gnu dot org @ 2008-03-13  9:51 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from uros at gcc dot gnu dot org  2008-03-13 09:50 -------
Subject: Bug 35553

Author: uros
Date: Thu Mar 13 09:49:43 2008
New Revision: 133164

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=133164
Log:
        PR target/35553
        * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
        __SSE_USE_INLINED_FUNC__ when using -flag-keep-inline-functions
        together with optimization.
        * config/i386/xmmintrin.h: Use __SSE_USE_INLINED_FUNC__ instead of
        __OPTIMIZE__ to choose between inlined intrinsic SSE function having
        immediate arguments and its equivalent macro definition.
        * config/i386/bmintrin.h: Ditto.
        * config/i386/smmintrin.h: Ditto.
        * config/i386/tmmintrin.h: Ditto.
        * config/i386/mmintrin-common.h: Ditto.
        * config/i386/ammintrin.h: Ditto.
        * config/i386/emmintrin.h: Ditto.

testsuite/ChangeLog:

        PR target/35553
        * g++.dg/other/i386-3.C: New test.


Added:
    trunk/gcc/testsuite/g++.dg/other/i386-3.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/ammintrin.h
    trunk/gcc/config/i386/bmmintrin.h
    trunk/gcc/config/i386/emmintrin.h
    trunk/gcc/config/i386/i386.h
    trunk/gcc/config/i386/mmintrin-common.h
    trunk/gcc/config/i386/smmintrin.h
    trunk/gcc/config/i386/tmmintrin.h
    trunk/gcc/config/i386/xmmintrin.h
    trunk/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug c++/35553] -fkeep-inline-functions and -O errors out in SSE headers
  2008-03-12 14:48 [Bug c++/35553] New: -fkeep-inline-functions and -O errors out in SSE headers gpiez at web dot de
                   ` (2 preceding siblings ...)
  2008-03-13  9:51 ` uros at gcc dot gnu dot org
@ 2008-03-13 13:35 ` uros at gcc dot gnu dot org
  2008-03-14 14:35 ` uros at gcc dot gnu dot org
  2008-03-14 14:38 ` ubizjak at gmail dot com
  5 siblings, 0 replies; 7+ messages in thread
From: uros at gcc dot gnu dot org @ 2008-03-13 13:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from uros at gcc dot gnu dot org  2008-03-13 13:34 -------
Subject: Bug 35553

Author: uros
Date: Thu Mar 13 13:33:47 2008
New Revision: 133169

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=133169
Log:
        PR target/34000
        PR target/35553
        * config/i386/xmmintrin.h: Change all static inline functions to
        extern inline and add __gnu_inline__ attribute.
        * config/i386/bmintrin.h: Ditto.
        * config/i386/smmintrin.h: Ditto.
        * config/i386/tmmintrin.h: Ditto.
        * config/i386/mmintrin-common.h: Ditto.
        * config/i386/ammintrin.h: Ditto.
        * config/i386/emmintrin.h: Ditto.
        * config/i386/pmmintrin.h: Ditto.
        * config/i386/mmintrin.h: Ditto.
        * config/i386/mm3dnow.h: Ditto.

testsuite/ChangeLog:

        PR target/34000
        PR target/35553
        * g++.dg/other/i386-3.C: New test.
        * gcc.target/i386/sse-13.c: Redefine extern instead of static.
        * gcc.target/i386/sse-14.c: Ditto.
        * gcc.target/i386/mmx-1.c: Ditto.
        * gcc.target/i386/mmx-2.c: Ditto.
        * gcc.target/i386/3dnow-1.c: Ditto.
        * gcc.target/i386/3dnow-2.c: Ditto.
        * gcc.target/i386/3dnowA-1.c: Ditto.
        * gcc.target/i386/3dnowA-2.c: Ditto.


Added:
    trunk/gcc/testsuite/g++.dg/other/i386-3.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/ammintrin.h
    trunk/gcc/config/i386/bmmintrin.h
    trunk/gcc/config/i386/emmintrin.h
    trunk/gcc/config/i386/mm3dnow.h
    trunk/gcc/config/i386/mmintrin-common.h
    trunk/gcc/config/i386/mmintrin.h
    trunk/gcc/config/i386/pmmintrin.h
    trunk/gcc/config/i386/smmintrin.h
    trunk/gcc/config/i386/tmmintrin.h
    trunk/gcc/config/i386/xmmintrin.h
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.target/i386/3dnow-1.c
    trunk/gcc/testsuite/gcc.target/i386/3dnow-2.c
    trunk/gcc/testsuite/gcc.target/i386/3dnowA-1.c
    trunk/gcc/testsuite/gcc.target/i386/3dnowA-2.c
    trunk/gcc/testsuite/gcc.target/i386/mmx-1.c
    trunk/gcc/testsuite/gcc.target/i386/mmx-2.c
    trunk/gcc/testsuite/gcc.target/i386/sse-13.c
    trunk/gcc/testsuite/gcc.target/i386/sse-14.c


-- 


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


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

* [Bug c++/35553] -fkeep-inline-functions and -O errors out in SSE headers
  2008-03-12 14:48 [Bug c++/35553] New: -fkeep-inline-functions and -O errors out in SSE headers gpiez at web dot de
                   ` (3 preceding siblings ...)
  2008-03-13 13:35 ` uros at gcc dot gnu dot org
@ 2008-03-14 14:35 ` uros at gcc dot gnu dot org
  2008-03-14 14:38 ` ubizjak at gmail dot com
  5 siblings, 0 replies; 7+ messages in thread
From: uros at gcc dot gnu dot org @ 2008-03-14 14:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from uros at gcc dot gnu dot org  2008-03-14 14:35 -------
Subject: Bug 35553

Author: uros
Date: Fri Mar 14 14:34:09 2008
New Revision: 133217

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=133217
Log:
        PR target/34000
        PR target/35553
        * config/i386/xmmintrin.h: Change all static inline functions to
        extern inline and add __gnu_inline__ attribute.
        * config/i386/bmintrin.h: Ditto.
        * config/i386/smmintrin.h: Ditto.
        * config/i386/tmmintrin.h: Ditto.
        * config/i386/mmintrin-common.h: Ditto.
        * config/i386/ammintrin.h: Ditto.
        * config/i386/emmintrin.h: Ditto.
        * config/i386/pmmintrin.h: Ditto.
        * config/i386/mmintrin.h: Ditto.
        * config/i386/mm3dnow.h: Ditto.

testsuite/ChangeLog:

        PR target/34000
        PR target/35553
        * g++.dg/other/i386-3.C: New test.
        * gcc.target/i386/sse-13.c: Redefine extern instead of static.
        * gcc.target/i386/sse-14.c: Ditto.
        * gcc.target/i386/mmx-1.c: Ditto.
        * gcc.target/i386/mmx-2.c: Ditto.
        * gcc.target/i386/3dnow-1.c: Ditto.
        * gcc.target/i386/3dnow-2.c: Ditto.
        * gcc.target/i386/3dnowA-1.c: Ditto.
        * gcc.target/i386/3dnowA-2.c: Ditto.


Added:
    branches/gcc-4_3-branch/gcc/testsuite/g++.dg/other/i386-3.C
      - copied unchanged from r133169,
trunk/gcc/testsuite/g++.dg/other/i386-3.C
Modified:
    branches/gcc-4_3-branch/gcc/ChangeLog
    branches/gcc-4_3-branch/gcc/config/i386/ammintrin.h
    branches/gcc-4_3-branch/gcc/config/i386/bmmintrin.h
    branches/gcc-4_3-branch/gcc/config/i386/emmintrin.h
    branches/gcc-4_3-branch/gcc/config/i386/mm3dnow.h
    branches/gcc-4_3-branch/gcc/config/i386/mmintrin-common.h
    branches/gcc-4_3-branch/gcc/config/i386/mmintrin.h
    branches/gcc-4_3-branch/gcc/config/i386/pmmintrin.h
    branches/gcc-4_3-branch/gcc/config/i386/smmintrin.h
    branches/gcc-4_3-branch/gcc/config/i386/tmmintrin.h
    branches/gcc-4_3-branch/gcc/config/i386/xmmintrin.h
    branches/gcc-4_3-branch/gcc/testsuite/ChangeLog
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/3dnow-1.c
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/3dnow-2.c
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/3dnowA-1.c
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/3dnowA-2.c
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/mmx-1.c
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/mmx-2.c
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/sse-13.c
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/sse-14.c


-- 


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


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

* [Bug c++/35553] -fkeep-inline-functions and -O errors out in SSE headers
  2008-03-12 14:48 [Bug c++/35553] New: -fkeep-inline-functions and -O errors out in SSE headers gpiez at web dot de
                   ` (4 preceding siblings ...)
  2008-03-14 14:35 ` uros at gcc dot gnu dot org
@ 2008-03-14 14:38 ` ubizjak at gmail dot com
  5 siblings, 0 replies; 7+ messages in thread
From: ubizjak at gmail dot com @ 2008-03-14 14:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from ubizjak at gmail dot com  2008-03-14 14:38 -------
Fixed.


-- 

ubizjak at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.3.1


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


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

end of thread, other threads:[~2008-03-14 14:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-12 14:48 [Bug c++/35553] New: -fkeep-inline-functions and -O errors out in SSE headers gpiez at web dot de
2008-03-12 14:50 ` [Bug c++/35553] " gpiez at web dot de
2008-03-12 18:34 ` ubizjak at gmail dot com
2008-03-13  9:51 ` uros at gcc dot gnu dot org
2008-03-13 13:35 ` uros at gcc dot gnu dot org
2008-03-14 14:35 ` uros at gcc dot gnu dot org
2008-03-14 14:38 ` 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).