mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			25 lines
		
	
	
		
			880 B
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			880 B
		
	
	
	
		
			Solidity
		
	
	
	
	
	
contract c {
 | 
						|
    bytes1[10] data1;
 | 
						|
    bytes2[32] data2;
 | 
						|
    function test() public returns (uint check, uint res1, uint res2) {
 | 
						|
        uint i;
 | 
						|
        for (i = 0; i < data2.length; ++i)
 | 
						|
            data2[i] = 0xffff;
 | 
						|
        check = uint(uint16(data2[31])) * 0x10000 | uint(uint16(data2[14]));
 | 
						|
        for (i = 0; i < data1.length; ++i)
 | 
						|
            data1[i] = bytes1(uint8(1 + i));
 | 
						|
        data2 = data1;
 | 
						|
        for (i = 0; i < 16; ++i)
 | 
						|
            res1 |= uint(uint16(data2[i])) * 0x10000**i;
 | 
						|
        for (i = 0; i < 16; ++i)
 | 
						|
            res2 |= uint(uint16(data2[16 + i])) * 0x10000**i;
 | 
						|
    }
 | 
						|
}
 | 
						|
// ====
 | 
						|
// compileToEwasm: also
 | 
						|
// ----
 | 
						|
// test() -> 0xffffffff, 0x0000000000000000000000000a00090008000700060005000400030002000100, 0x0000000000000000000000000000000000000000000000000000000000000000
 | 
						|
// gas irOptimized: 124910
 | 
						|
// gas legacy: 187414
 | 
						|
// gas legacyOptimized: 165659
 |