1 /* PR rtl-optimization/45912 */
2
3 extern void abort (void);
4
5 static void* __attribute__((noinline,noclone))
get_addr_base_and_unit_offset(void * base,long long * i)6 get_addr_base_and_unit_offset (void *base, long long *i)
7 {
8 *i = 0;
9 return base;
10 }
11
12 static void* __attribute__((noinline,noclone))
build_int_cst(void * base,long long offset)13 build_int_cst (void *base, long long offset)
14 {
15 if (offset != 4)
16 abort ();
17
18 return base;
19 }
20
21 static void* __attribute__((noinline,noclone))
build_ref_for_offset(void * base,long long offset)22 build_ref_for_offset (void *base, long long offset)
23 {
24 long long base_offset;
25 base = get_addr_base_and_unit_offset (base, &base_offset);
26 return build_int_cst (base, base_offset + offset / 8);
27 }
28
29 int
main(void)30 main (void)
31 {
32 void *ret = build_ref_for_offset ((void *)0, 32);
33 if (ret != (void *)0)
34 abort ();
35 return 0;
36 }
37