1 /* { dg-do compile } */
2 /* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } {"-mfloat-abi=softfp" } } */
3 /* { dg-options "-O2 -fno-omit-frame-pointer -mabi=apcs-gnu -mfloat-abi=softfp" } */
4 
5 
6 struct super_block
7 {
8   int s_blocksize_bits;
9 };
10 struct btrfs_fs_info
11 {
12   struct super_block *sb;
13 };
14 struct btrfs_root
15 {
16   struct btrfs_fs_info *fs_info;
17 } *b;
18 
19 
20 int a, c, d;
21 long long e;
22 
23 extern int foo1 (struct btrfs_root *, int, int, int);
24 extern int foo2 (struct btrfs_root *, int, int);
25 
26 int
truncate_one_csum(struct btrfs_root * p1,long long p2,long long p3)27 truncate_one_csum (struct btrfs_root *p1, long long p2, long long p3)
28 {
29   int f, g, i = p1->fs_info->sb->s_blocksize_bits;
30   g = a;
31   long long h = p2 + p3;
32   f = foo1 (b, 0, c, 0);
33   e = f / g;
34   e <<= p1->fs_info->sb->s_blocksize_bits;
35   if (d < p2)
36     {
37       int j = e - h >> i;
38       foo2 (p1, 0, j);
39     }
40   else
41     {
42       asm ("1\t.long ");
43       __builtin_unreachable ();
44     }
45 }
46