Commit 41bf4045 authored by Ben Gamari's avatar Ben Gamari 🐢 Committed by Marge Bot

testsuite: Add test for #16514

parent f7370333
Pipeline #6756 failed with stages
in 273 minutes and 7 seconds
-- ensure that the XMM register values are properly preserved across STG
-- exit/entry. Note that this is very sensitive to code generation.
module Main where
import Control.Monad (when)
import System.Exit (exitWith, ExitCode(..))
foreign export ccall fn_hs :: IO ()
fn_hs :: IO ()
fn_hs = return ()
foreign import ccall test :: IO Int
main :: IO ()
main = do res <- test
when (res /= 0) (exitWith $ ExitFailure res)
1.414210 1.732050 2.236070 2.828430 3.605550 4.582580
1.414210 1.732050 2.236070 2.828430 3.605550 4.582580
1.414210 1.732050 2.236070 2.828430 3.605550 4.582580
#include <iostream>
#include <stdexcept>
extern "C" {
void fn_hs();
void fn() {
fn_hs();
}
void check(double sqrt2, double sqrt3, double sqrt5,
double sqrt8, double sqrt13, double sqrt21) {
std::cout << std::fixed << sqrt2 << " " << sqrt3 << " " << sqrt5 << " "
<< sqrt8 << " " << sqrt13 << " " << sqrt21 << std::endl;
if (sqrt2 != 1.41421 || sqrt3 != 1.73205 || sqrt5 != 2.23607 ||
sqrt8 != 2.82843 || sqrt13 != 3.60555 || sqrt21 != 4.58258) {
throw std::runtime_error("xmm registers have been scratched");
}
}
int test() {
try {
double sqrt2 = 1.41421;
double sqrt3 = 1.73205;
double sqrt5 = 2.23607;
double sqrt8 = 2.82843;
double sqrt13 = 3.60555;
double sqrt21 = 4.58258;
check(sqrt2, sqrt3, sqrt5, sqrt8, sqrt13, sqrt21);
fn();
check(sqrt2, sqrt3, sqrt5, sqrt8, sqrt13, sqrt21);
try {
fn();
} catch (const std::exception &) {
}
check(sqrt2, sqrt3, sqrt5, sqrt8, sqrt13, sqrt21);
} catch (const std::exception &e) {
std::cerr << e.what() << std::endl;
return 1;
}
return 0;
}
} // extern "C"
......@@ -390,3 +390,4 @@ test('keep-cafs',
],
makefile_test, ['KeepCafs'])
test('T16514', unless(opsys('mingw32'), skip), compile_and_run, ['T16514_c.cpp -lstdc++'])
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment