aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/20050824-1.c
blob: 4df79fb6ae7e78eb44a7e45d7c93f82f1004b5a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* Make sure that the S/390 specific shift_count_operand
   predicate work properly.  */

/* { dg-do compile { target s390*-*-* } } */
/* { dg-options "-O3" } */

unsigned long long
f (unsigned long long a, unsigned long b)
{
  asm ("" : : : 
#ifdef __s390x__
		"r13", "r14",
#endif
		"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", 
                "r8", "r9", "r10", "r11", "r12");

  return a << ((b + 3) & 63);
}

unsigned long long
g (unsigned long long a, char **b , int c, int d, int e, int f)
{
  char buffer [4096];

  *b = &buffer[0];

  return a << ((unsigned long)&f & 63);
}

unsigned long long
h (unsigned long long a, int b, int c, int d, int e, int f)
{
  return a << (((unsigned long)&f + 3));
}