Index: gcc/config/i386/i386.md |
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md |
index 6429360bb9de1ac243ec95f6da95411d58219418..783d13d337163035b8ea198c795d62fc848b4793 100644 |
--- a/gcc/config/i386/i386.md |
+++ b/gcc/config/i386/i386.md |
@@ -17500,7 +17500,19 @@ |
(unspec:XF [(match_dup 2)] UNSPEC_SINCOS_SIN))] |
"TARGET_USE_FANCY_MATH_387 |
&& flag_unsafe_math_optimizations" |
- "fsincos" |
+{ |
+ if (TARGET_NACL) |
+ { |
+ return "fld %%st(0)" |
+ "\n\tfsin" |
+ "\n\tfxch" |
+ "\n\tfcos"; |
+ } |
+ else |
+ { |
+ return "fsincos"; |
+ } |
+} |
[(set_attr "type" "fpspc") |
(set_attr "mode" "XF")]) |
@@ -17538,6 +17550,19 @@ |
|| TARGET_MIX_SSE_I387) |
&& flag_unsafe_math_optimizations" |
"fsincos" |
+{ |
+ if (TARGET_NACL) |
+ { |
+ return "fld %%st(0)" |
+ "\n\tfsin" |
+ "\n\tfxch" |
+ "\n\tfcos"; |
+ } |
+ else |
+ { |
+ return "fsincos"; |
+ } |
+} |
[(set_attr "type" "fpspc") |
(set_attr "mode" "XF")]) |