| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // RUN: --target solana --emit cfg
- contract Testing {
- // BEGIN-CHECK: Testing::Testing::function::switch_default__uint256
- function switch_default(uint a) public pure returns (uint b) {
- assembly {
- // CHECK: switch (arg #0):
- switch a
- // CHECK: case uint256 1: goto block #2
- // CHECK: case uint256 2: goto block #3
- // CHECK: default: goto block #4
- // CHECK: block1: # end_switch
- // CHECK: branchcond (%b == uint256 7), block5, block6
- case 1 {
- // CHECK: block2: # case_0
- // CHECK: ty:uint256 %b = uint256 5
- b := 5
- // CHECK: branch block1
- }
- case 2 {
- // CHECK: block3: # case_1
- // CHECK: ty:uint256 %b = uint256 6
- b := 6
- // CHECK: branch block1
- }
- default {
- // CHECK: block4: # default
- // CHECK: ty:uint256 %b = uint256 7
- b := 7
- // CHECK: branch block1
- }
- }
- if (b == 7) {
- b += 1;
- }
- }
- // BEGIN-CHECK: Testing::Testing::function::switch_no_default__uint256
- function switch_no_default(uint a) public pure returns (uint b) {
- assembly {
- switch a
- // CHECK: switch (arg #0):
- // CHECK: case uint256 1: goto block #2
- // CHECK: case uint256 2: goto block #3
- // CHECK: default: goto block #1
- // CHECK: block1: # end_switch
- // CHECK: branchcond (%b == uint256 5), block4, block5
- case 1 {
- // CHECK: block2: # case_0
- // CHECK: ty:uint256 %b = uint256 5
- // CHECK: branch block1
- b := 5
- }
- case 2 {
- // CHECK: block3: # case_1
- // CHECK: ty:uint256 %b = uint256 6
- // CHECK: branch block1
- b := 6
- }
- }
- if (b == 5) {
- b += 1;
- }
- }
- }
|