1#include <metal_stdlib> 2#include <simd/simd.h> 3#ifdef __clang__ 4#pragma clang diagnostic ignored "-Wall" 5#endif 6using namespace metal; 7struct Uniforms { 8 half4 colorGreen; 9 half4 colorRed; 10}; 11struct Inputs { 12}; 13struct Outputs { 14 half4 sk_FragColor [[color(0)]]; 15}; 16bool return_in_one_case_bi(int x) { 17 int val = 0; 18 switch (x) { 19 case 1: 20 ++val; 21 return false; 22 default: 23 ++val; 24 } 25 return val == 1; 26} 27bool return_in_default_bi(int x) { 28 switch (x) { 29 default: 30 return true; 31 } 32} 33bool return_in_every_case_bi(int x) { 34 switch (x) { 35 case 1: 36 return false; 37 default: 38 return true; 39 } 40} 41bool return_in_every_case_no_default_bi(int x) { 42 int val = 0; 43 switch (x) { 44 case 1: 45 return false; 46 case 2: 47 return true; 48 } 49 ++val; 50 return val == 1; 51} 52bool case_has_break_before_return_bi(int x) { 53 int val = 0; 54 switch (x) { 55 case 1: 56 break; 57 case 2: 58 return true; 59 default: 60 return true; 61 } 62 ++val; 63 return val == 1; 64} 65bool case_has_break_after_return_bi(int x) { 66 switch (x) { 67 case 1: 68 return false; 69 case 2: 70 return true; 71 default: 72 return true; 73 } 74} 75bool no_return_in_default_bi(int x) { 76 int val = 0; 77 switch (x) { 78 case 1: 79 return false; 80 case 2: 81 return true; 82 default: 83 break; 84 } 85 ++val; 86 return val == 1; 87} 88bool empty_default_bi(int x) { 89 int val = 0; 90 switch (x) { 91 case 1: 92 return false; 93 case 2: 94 return true; 95 default: 96 } 97 ++val; 98 return val == 1; 99} 100bool return_with_fallthrough_bi(int x) { 101 switch (x) { 102 case 1: 103 case 2: 104 return true; 105 default: 106 return false; 107 } 108} 109bool fallthrough_ends_in_break_bi(int x) { 110 int val = 0; 111 switch (x) { 112 case 1: 113 case 2: 114 break; 115 default: 116 return false; 117 } 118 ++val; 119 return val == 1; 120} 121bool fallthrough_to_default_with_break_bi(int x) { 122 int val = 0; 123 switch (x) { 124 case 1: 125 case 2: 126 default: 127 break; 128 } 129 ++val; 130 return val == 1; 131} 132bool fallthrough_to_default_with_return_bi(int x) { 133 switch (x) { 134 case 1: 135 case 2: 136 default: 137 return true; 138 } 139} 140bool fallthrough_with_loop_break_bi(int x) { 141 int val = 0; 142 switch (x) { 143 case 1: 144 for (int i = 0;i < 5; ++i) { 145 ++val; 146 break; 147 } 148 case 2: 149 default: 150 return true; 151 } 152} 153bool fallthrough_with_loop_continue_bi(int x) { 154 int val = 0; 155 switch (x) { 156 case 1: 157 for (int i = 0;i < 5; ++i) { 158 ++val; 159 continue; 160 } 161 case 2: 162 default: 163 return true; 164 } 165} 166fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) { 167 Outputs _out; 168 (void)_out; 169 int x = int(_uniforms.colorGreen.y); 170 _out.sk_FragColor = ((((((((((((return_in_one_case_bi(x) && return_in_default_bi(x)) && return_in_every_case_bi(x)) && return_in_every_case_no_default_bi(x)) && case_has_break_before_return_bi(x)) && case_has_break_after_return_bi(x)) && no_return_in_default_bi(x)) && empty_default_bi(x)) && return_with_fallthrough_bi(x)) && fallthrough_ends_in_break_bi(x)) && fallthrough_to_default_with_break_bi(x)) && fallthrough_to_default_with_return_bi(x)) && fallthrough_with_loop_break_bi(x)) && fallthrough_with_loop_continue_bi(x) ? _uniforms.colorGreen : _uniforms.colorRed; 171 return _out; 172} 173