URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [20040311-1.c] - Rev 816
Compare with Previous | Blame | View Log
/* Copyright (C) 2004 Free Software Foundation. Check that constant folding and RTL simplification of -(x >> y) doesn't break anything and produces the expected results. Written by Roger Sayle, 11th March 2004. */ extern void abort (void); #define INT_BITS (sizeof(int)*8) int test1(int x) { return -(x >> (INT_BITS-1)); } int test2(unsigned int x) { return -((int)(x >> (INT_BITS-1))); } int test3(int x) { int y; y = INT_BITS-1; return -(x >> y); } int test4(unsigned int x) { int y; y = INT_BITS-1; return -((int)(x >> y)); } int main() { if (test1(0) != 0) abort (); if (test1(1) != 0) abort (); if (test1(-1) != 1) abort (); if (test2(0) != 0) abort (); if (test2(1) != 0) abort (); if (test2((unsigned int)-1) != -1) abort (); if (test3(0) != 0) abort (); if (test3(1) != 0) abort (); if (test3(-1) != 1) abort (); if (test4(0) != 0) abort (); if (test4(1) != 0) abort (); if (test4((unsigned int)-1) != -1) abort (); return 0; }