Bug 229444 - gcc and sse2 intrins does not correctly compile with -O<1, 2, 3, s> optimization flags
gcc and sse2 intrins does not correctly compile with -O<1, 2, 3, s> optimizat...
Product: Fedora
Classification: Fedora
Component: gcc4 (Show other bugs)
All Linux
medium Severity medium
: ---
: ---
Assigned To: Jakub Jelinek
Depends On:
  Show dependency treegraph
Reported: 2007-02-20 23:21 EST by Steve
Modified: 2007-11-30 17:11 EST (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2007-02-21 03:11:10 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)
a very very small c program with sse2 instructions (338 bytes, text/x-csrc)
2007-02-20 23:21 EST, Steve
no flags Details

  None (edit)
Description Steve 2007-02-20 23:21:39 EST
Description of problem:
gcc and sse2 does not correctly compile with optimization flags of -O1, -O2,
-O3, -O or -Os

Version-Release number of selected component (if applicable):

How reproducible:
Only tested on a real simple sse2 enabled c source code file, but always.

Steps to Reproduce:
1. Write small c program with sse2 (emmintrin.h) in this case
2. Compile program with optimization flags of -O1, -O2, -O3, -Os, -O
3. The compiled program will not contain sse2 instructions
4. if also compiled with -S and any of the mentioned flags the generated
assembly will not contain sse2 instructions
5. if compiled with -O0 or no flag compiled program contains sse2 instructions
Actual results:
Program when compiled with certain -O flags will not actually produce an sse2
enabled program

Expected results:
program should correctly compile with -O, -O1, -O2, -O3, and -Os even if 

Additional info:
Intel Pentium M (with sse2)

attached will be a sse2 program
successfull comiled with
gcc -O0 -march=pentium-m -msse2 test.c -o test
Comment 1 Steve 2007-02-20 23:21:39 EST
Created attachment 148465 [details]
a very very small c program with sse2 instructions
Comment 2 Jakub Jelinek 2007-02-21 03:11:10 EST
They are optimized away as useless, as written in the testcase they don't have
any visible side effect, the results are stored into an automatic variable.
If you don't want them to be optimized away, you need to either store at least
the final result to a non-automatic variable, return from function, pass to
other function (e.g. print them).
Comment 3 Steve 2007-02-21 12:57:04 EST
Oh, I didn't realize the compiler would automatically disregard the sse2 if they
are useless instructions, I guess that's a good thing then.

Note You need to log in before you can comment on or make changes to this bug.