https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126153
--- Comment #12 from David Binderman <dcb314 at hotmail dot com> ---
After a couple of hours of reduction, I have:
typedef signed __int8_t;
typedef char __uint8_t;
typedef int __int16_t;
typedef unsigned __uint16_t;
typedef signed __int32_t;
typedef long __int64_t;
typedef long __uint64_t;
typedef __int8_t int8_t;
typedef __int16_t int16_t;
typedef __int32_t int32_t;
typedef __int64_t int64_t;
typedef __uint8_t uint8_t;
typedef __uint16_t uint16_t;
typedef __uint64_t uint64_t;
int64_t
safe_lshift_func_int64_t_s_s(int64_t left, int right )
{
return
left < 0 || right < 0 || right >= 32 || left ?
:
left < right;
}
#pragma pack(1)
struct S0 {
unsigned f3 : 14;
signed f4 : 5;
unsigned f6 : 6;
signed f7 : 3};
struct S1 {
int8_t f0;
uint16_t f1;
uint8_t f2;
struct S0 f3};
struct S2 {
struct S1 f5};
struct S3 {
struct S1 f7};
struct S0 g_8 ;
int32_t g_10 ;
struct S2 g_21 ;
int32_t g_674 ;
struct S3 g_856 ;
int32_t *g_937 = &g_674;
int64_t g_1122 ;
uint8_t func_4(struct S0 , struct S0 , int8_t );
struct S0 func_22(uint16_t , int16_t , int32_t , int32_t , struct S1 );
uint16_t func_1()
{
uint64_t l_9 ;
func_4(g_8, g_8, l_9);
}
uint8_t func_4(struct S0 , struct S0 , int8_t )
{
for (g_10 = 9; g_10 ; g_10 -= 1)
{
struct S1 l_59 = {0xB8L,0x14L,35,5,0,2,2};
func_22(0 , g_21.f5.f2, l_59.f0, g_856.f7.f1, l_59);
}
}
struct S0 func_22(uint16_t , int16_t , int32_t , int32_t , struct S1 p_27)
{
int64_t *l_1162 = &g_1122;
struct S0 l_1180 ;
*g_937 &= *l_1162 = safe_lshift_func_int64_t_s_s(1L , p_27.f3.f7) &
p_27.f2;
return l_1180;
}
int main ()
{
func_1();
}
Reduction continuing.