/* PR target/35664 */ /* Tetstcase by Mike Stein */ /* { dg-do compile } */ /* { dg-options "-O2 -mno-fpu" } */ typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32; typedef unsigned long long u64; struct pt_regs { }; static inline __attribute__((always_inline)) struct task_struct *__get_current(void) { } static inline __attribute__((always_inline)) u32 flip_dword (u32 l) { return ((l&0xff)<<24) | (((l>>8)&0xff)<<16) | (((l>>16)&0xff)<<8)| ((l>>24)&0xff); } static inline __attribute__((always_inline)) u32 __readl(const volatile void *addr) { return flip_dword(*( volatile u32 *)addr); } enum e1e_registers { E1000_PRC64 = 0x0405C, E1000_PRC127 = 0x04060, E1000_PRC255 = 0x04064, E1000_PTC511 = 0x040E4, E1000_PTC1023 = 0x040E8, E1000_PTC1522 = 0x040EC, E1000_MPTC = 0x040F0, }; enum e1000_media_type { e1000_media_type_copper = 1, }; struct e1000_rx_desc { struct { } wb; }; struct e1000_hw_stats { u64 prc64; u64 prc127; u64 prc255; u64 ptc511; u64 ptc1023; u64 ptc1522; u64 mptc; }; struct e1000_shadow_ram { u16 value; }; struct e1000_dev_spec_ich8lan { struct e1000_shadow_ram shadow_ram[2048]; }; struct e1000_hw { u8 *hw_addr; union { struct e1000_dev_spec_ich8lan ich8lan; } dev_spec; enum e1000_media_type media_type; }; struct e1000_adapter { u16 link_speed; struct e1000_hw hw; struct e1000_hw_stats stats; unsigned int flags; }; static inline __attribute__((always_inline)) u32 __er32(struct e1000_hw *hw, unsigned long reg) { return __readl(hw->hw_addr + reg); } void e1000e_update_stats(struct e1000_adapter *adapter) { struct e1000_hw *hw = &adapter->hw; u16 phy_tmp; if (adapter->flags & (1 << 10)) { adapter->stats.prc64 += __er32(hw, E1000_PRC64); adapter->stats.prc127 += __er32(hw, E1000_PRC127); adapter->stats.prc255 += __er32(hw, E1000_PRC255); adapter->stats.ptc511 += __er32(hw, E1000_PTC511); adapter->stats.ptc1023 += __er32(hw, E1000_PTC1023); adapter->stats.ptc1522 += __er32(hw, E1000_PTC1522); } adapter->stats.mptc += __er32(hw, E1000_MPTC); if (hw->media_type == e1000_media_type_copper) { if ((adapter->link_speed == 1000) && (!e1e_rphy(hw, 0x0A, &phy_tmp))) { } } }