summaryrefslogtreecommitdiff
path: root/nacl/okcompilers/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'nacl/okcompilers/main.c')
-rw-r--r--nacl/okcompilers/main.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/nacl/okcompilers/main.c b/nacl/okcompilers/main.c
new file mode 100644
index 00000000..3b7efa25
--- /dev/null
+++ b/nacl/okcompilers/main.c
@@ -0,0 +1,25 @@
1extern int not3(int);
2extern int bytes(int);
3extern long long shr32(long long);
4extern double double5(void);
5extern int longbytes(void);
6extern int intbytes(void);
7
8int main(int argc,char **argv)
9{
10 if (intbytes() != sizeof(int)) return 100;
11 if (longbytes() != sizeof(long)) return 100;
12
13 if (not3(3)) return 100;
14
15 /* on ppc32, gcc -mpowerpc64 produces SIGILL for >>32 */
16 if (!not3(shr32(1))) return 100;
17
18 /* on pentium 1, gcc -march=pentium2 produces SIGILL for (...+7)/8 */
19 if (bytes(not3(1)) != 1) return 100;
20
21 /* on pentium 1, gcc -march=prescott produces SIGILL for double comparison */
22 if (double5() < 0) return 100;
23
24 return 0;
25}