re PR target/66326 (Floating point exception with -mfpmath=387 and -fcilkplus.)
libcilkrts/ 2015-11-09 Igor Zamyatin <igor.zamyatin@intel.com> PR target/66326 * runtime/config/x86/os-unix-sysdep.c (sysdep_save_fp_ctrl_state): Use fnstcw instead fnstsw. gcc/testsuite 2015-11-09 Igor Zamyatin <igor.zamyatin@intel.com> PR target/66326 * g++.dg/cilk-plus/CK/pr66326.cc: New test. From-SVN: r230008
This commit is contained in:
parent
00402c9415
commit
a42062b176
4 changed files with 45 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
2015-11-09 Igor Zamyatin <igor.zamyatin@intel.com>
|
||||
|
||||
PR target/66326
|
||||
* g++.dg/cilk-plus/CK/pr66326.cc: New test.
|
||||
|
||||
2015-11-09 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* gcc.target/i386/addr-space-1.c: New test.
|
||||
|
|
33
gcc/testsuite/g++.dg/cilk-plus/CK/pr66326.cc
Normal file
33
gcc/testsuite/g++.dg/cilk-plus/CK/pr66326.cc
Normal file
|
@ -0,0 +1,33 @@
|
|||
/* { dg-options "-fcilkplus" } */
|
||||
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-fcilkplus -lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
|
||||
|
||||
#include <cilk/cilk.h>
|
||||
#include <vector>
|
||||
#include <random>
|
||||
|
||||
template <class T>
|
||||
void do_not_optimize_away(T&& x) {
|
||||
asm volatile("" : "+r"(x));
|
||||
}
|
||||
|
||||
const int N = 1'000'000;
|
||||
|
||||
auto compute() {
|
||||
std::vector<double> v(N);
|
||||
auto rng = std::mt19937{std::random_device{}()};
|
||||
std::uniform_real_distribution<double> dist(0, 1);
|
||||
for (int i = 0; i < N; ++i) v[i] = std::log(std::sqrt(dist(rng)));
|
||||
return v;
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::vector<double> v1, v2, v3;
|
||||
cilk_spawn [&] { v1 = compute(); }();
|
||||
cilk_spawn [&] { v2 = compute(); }();
|
||||
v3 = compute();
|
||||
do_not_optimize_away(v1.data());
|
||||
do_not_optimize_away(v2.data());
|
||||
do_not_optimize_away(v3.data());
|
||||
return 0;
|
||||
}
|
|
@ -1,3 +1,9 @@
|
|||
2015-11-09 Igor Zamyatin <igor.zamyatin@intel.com>
|
||||
|
||||
PR target/66326
|
||||
* runtime/config/x86/os-unix-sysdep.c (sysdep_save_fp_ctrl_state):
|
||||
Use fnstcw instead fnstsw.
|
||||
|
||||
2015-05-13 Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com>
|
||||
|
||||
* Makefile.in: Regenerated with automake-1.11.6.
|
||||
|
|
|
@ -135,7 +135,7 @@ void sysdep_save_fp_ctrl_state(__cilkrts_stack_frame *sf)
|
|||
{
|
||||
__asm__ ("stmxcsr %0" : "=m" (sf->mxcsr));
|
||||
}
|
||||
__asm__ ("fnstsw %0" : "=m" (sf->fpcsr));
|
||||
__asm__ ("fnstcw %0" : "=m" (sf->fpcsr));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue