| /* { dg-do compile } */ |
| /* { dg-options "-Os" } */ |
| |
| /* This testcase verifies that a uint8_t variable assigned from a wider variable |
| with the same range is held in a single register. VRP must not fold away the |
| conversion and use two regs to hold the uint16_t - widenings are ok only upto |
| word mode (1 byte for AVR). |
| */ |
| |
| unsigned int foo(const unsigned int wvalue) |
| { |
| const unsigned char type = (wvalue >> 8); |
| unsigned int size = 0; |
| |
| if (type == 1) |
| { |
| size = 20; |
| } |
| return size; |
| } |
| |
| /* { dg-final { scan-assembler "cpi r25,lo8\\(1\\)" } } */ |
| /* { dg-final { scan-assembler-not "cpc r\\d+,__zero_reg__" } } */ |
| |