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