This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[testsuite, committed, PR65941] Add and use effective target rdrand
- From: Tom de Vries <Tom_deVries at mentor dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 1 May 2017 16:28:14 +0200
- Subject: [testsuite, committed, PR65941] Add and use effective target rdrand
- Authentication-results: sourceware.org; auth=none
Hi,
atm I get these failures for x86_64 -m32:
...
FAIL: g++.dg/other/pr59492.C -std=gnu++11 (test for excess errors)
FAIL: g++.dg/other/pr59492.C -std=gnu++14 (test for excess errors)
FAIL: g++.dg/other/pr59492.C -std=gnu++98 (test for excess errors)
...
More specifically:
...
/tmp/ccSwV0hl.s: Assembler messages:
/tmp/ccSwV0hl.s:24: Error: no such instruction: `rdrand %edx'
compiler exited with status 1
...
This patch turns the FAIL into an UNSUPPORTED.
Committed as obvious.
Thanks,
- Tom
Add and use effective target rdrand
2017-05-01 Tom de Vries <tom@codesourcery.com>
PR testsuite/65941
* lib/target-supports.exp (check_effective_target_rdrand): New proc.
* g++.dg/other/pr59492.C: Require effective target rdrand.
---
gcc/testsuite/g++.dg/other/pr59492.C | 1 +
gcc/testsuite/lib/target-supports.exp | 14 ++++++++++++++
2 files changed, 15 insertions(+)
diff --git a/gcc/testsuite/g++.dg/other/pr59492.C b/gcc/testsuite/g++.dg/other/pr59492.C
index 84bd255..92694ae 100644
--- a/gcc/testsuite/g++.dg/other/pr59492.C
+++ b/gcc/testsuite/g++.dg/other/pr59492.C
@@ -2,6 +2,7 @@
// { dg-options "-mx32 -fPIC" }
// { dg-require-ifunc "" }
// { dg-require-effective-target maybe_x32 }
+// { dg-require-effective-target rdrand }
void
__throw_runtime_error(const char*) __attribute__((__noreturn__));
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 342af27..83e7f26 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -8296,6 +8296,20 @@ proc check_effective_target_store_merge { } {
return 0
}
+# Return 1 if we're able to assemble rdrand
+
+proc check_effective_target_rdrand { } {
+ return [check_no_compiler_messages_nocache rdrand object {
+ unsigned int
+ __foo(void)
+ {
+ unsigned int val;
+ __builtin_ia32_rdrand32_step(&val);
+ return val;
+ }
+ } "-mrdrnd" ]
+}
+
# Return 1 if the target supports coprocessor instructions: cdp, ldc, stc, mcr and
# mrc.
proc check_effective_target_arm_coproc1_ok_nocache { } {