| /* PR 35701 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-Wconversion -Wsign-conversion" } */ |
| /* { dg-require-effective-target int32plus } */ |
| |
| typedef struct _my_struct_t { |
| unsigned int small:1; |
| unsigned int big:31; |
| } my_struct_t, *my_struct_p_t; |
| |
| void |
| my_func1(unsigned int sm, unsigned int bi, my_struct_p_t msp) |
| { |
| msp->small = sm; /* { dg-warning "conversion" } */ |
| msp->big = bi; /* { dg-warning "conversion" } */ |
| } |
| |
| void |
| my_func2(unsigned int sm, unsigned int bi, my_struct_p_t msp) |
| { |
| msp->small = sm & 1U; |
| msp->big = bi & 0x7fffffffU; |
| } |
| |
| unsigned short |
| my_func3(unsigned int sm) |
| { |
| unsigned short res; |
| res = sm & 0xff20U; |
| return res; |
| } |