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