1f08c3bdfSopenharmony_cistruct S { 2f08c3bdfSopenharmony_ci int :1; 3f08c3bdfSopenharmony_ci signed int s:2; 4f08c3bdfSopenharmony_ci unsigned int u:3; 5f08c3bdfSopenharmony_ci long l; 6f08c3bdfSopenharmony_ci double d; 7f08c3bdfSopenharmony_ci}; 8f08c3bdfSopenharmony_ci 9f08c3bdfSopenharmony_ciint os(int i, struct S *b) { return i || b->s; } 10f08c3bdfSopenharmony_ciint ou(int i, struct S *b) { return i || b->u; } 11f08c3bdfSopenharmony_ciint ol(int i, struct S *b) { return i || b->l; } 12f08c3bdfSopenharmony_ciint od(int i, struct S *b) { return i || b->d; } 13f08c3bdfSopenharmony_ci 14f08c3bdfSopenharmony_ciint as(int i, struct S *b) { return i && b->s; } 15f08c3bdfSopenharmony_ciint au(int i, struct S *b) { return i && b->u; } 16f08c3bdfSopenharmony_ciint al(int i, struct S *b) { return i && b->l; } 17f08c3bdfSopenharmony_ciint ad(int i, struct S *b) { return i && b->d; } 18f08c3bdfSopenharmony_ci 19f08c3bdfSopenharmony_ci/* 20f08c3bdfSopenharmony_ci * check-name: logical 21f08c3bdfSopenharmony_ci * check-command: test-linearize -m64 -fdump-ir -Wno-decl $file 22f08c3bdfSopenharmony_ci * check-assert: sizeof(void *) == 8 && sizeof(long) == 8 && sizeof(double) == 8 23f08c3bdfSopenharmony_ci * 24f08c3bdfSopenharmony_ci * check-output-start 25f08c3bdfSopenharmony_cios: 26f08c3bdfSopenharmony_ci.L0: 27f08c3bdfSopenharmony_ci <entry-point> 28f08c3bdfSopenharmony_ci store.32 %arg1 -> 0[i] 29f08c3bdfSopenharmony_ci store.64 %arg2 -> 0[b] 30f08c3bdfSopenharmony_ci load.32 %r2 <- 0[i] 31f08c3bdfSopenharmony_ci setne.1 %r3 <- %r2, $0 32f08c3bdfSopenharmony_ci phisrc.32 %phi1 <- $1 33f08c3bdfSopenharmony_ci cbr %r3, .L3, .L2 34f08c3bdfSopenharmony_ci 35f08c3bdfSopenharmony_ci.L2: 36f08c3bdfSopenharmony_ci load.64 %r4 <- 0[b] 37f08c3bdfSopenharmony_ci load.32 %r5 <- 0[%r4] 38f08c3bdfSopenharmony_ci lsr.32 %r6 <- %r5, $1 39f08c3bdfSopenharmony_ci trunc.2 %r7 <- (32) %r6 40f08c3bdfSopenharmony_ci setne.1 %r8 <- %r7, $0 41f08c3bdfSopenharmony_ci zext.32 %r9 <- (1) %r8 42f08c3bdfSopenharmony_ci phisrc.32 %phi2 <- %r9 43f08c3bdfSopenharmony_ci br .L3 44f08c3bdfSopenharmony_ci 45f08c3bdfSopenharmony_ci.L3: 46f08c3bdfSopenharmony_ci phi.32 %r1 <- %phi1, %phi2 47f08c3bdfSopenharmony_ci phisrc.32 %phi3(return) <- %r1 48f08c3bdfSopenharmony_ci br .L1 49f08c3bdfSopenharmony_ci 50f08c3bdfSopenharmony_ci.L1: 51f08c3bdfSopenharmony_ci phi.32 %r10 <- %phi3(return) 52f08c3bdfSopenharmony_ci ret.32 %r10 53f08c3bdfSopenharmony_ci 54f08c3bdfSopenharmony_ci 55f08c3bdfSopenharmony_ciou: 56f08c3bdfSopenharmony_ci.L4: 57f08c3bdfSopenharmony_ci <entry-point> 58f08c3bdfSopenharmony_ci store.32 %arg1 -> 0[i] 59f08c3bdfSopenharmony_ci store.64 %arg2 -> 0[b] 60f08c3bdfSopenharmony_ci load.32 %r12 <- 0[i] 61f08c3bdfSopenharmony_ci setne.1 %r13 <- %r12, $0 62f08c3bdfSopenharmony_ci phisrc.32 %phi4 <- $1 63f08c3bdfSopenharmony_ci cbr %r13, .L7, .L6 64f08c3bdfSopenharmony_ci 65f08c3bdfSopenharmony_ci.L6: 66f08c3bdfSopenharmony_ci load.64 %r14 <- 0[b] 67f08c3bdfSopenharmony_ci load.32 %r15 <- 0[%r14] 68f08c3bdfSopenharmony_ci lsr.32 %r16 <- %r15, $3 69f08c3bdfSopenharmony_ci trunc.3 %r17 <- (32) %r16 70f08c3bdfSopenharmony_ci setne.1 %r18 <- %r17, $0 71f08c3bdfSopenharmony_ci zext.32 %r19 <- (1) %r18 72f08c3bdfSopenharmony_ci phisrc.32 %phi5 <- %r19 73f08c3bdfSopenharmony_ci br .L7 74f08c3bdfSopenharmony_ci 75f08c3bdfSopenharmony_ci.L7: 76f08c3bdfSopenharmony_ci phi.32 %r11 <- %phi4, %phi5 77f08c3bdfSopenharmony_ci phisrc.32 %phi6(return) <- %r11 78f08c3bdfSopenharmony_ci br .L5 79f08c3bdfSopenharmony_ci 80f08c3bdfSopenharmony_ci.L5: 81f08c3bdfSopenharmony_ci phi.32 %r20 <- %phi6(return) 82f08c3bdfSopenharmony_ci ret.32 %r20 83f08c3bdfSopenharmony_ci 84f08c3bdfSopenharmony_ci 85f08c3bdfSopenharmony_ciol: 86f08c3bdfSopenharmony_ci.L8: 87f08c3bdfSopenharmony_ci <entry-point> 88f08c3bdfSopenharmony_ci store.32 %arg1 -> 0[i] 89f08c3bdfSopenharmony_ci store.64 %arg2 -> 0[b] 90f08c3bdfSopenharmony_ci load.32 %r22 <- 0[i] 91f08c3bdfSopenharmony_ci setne.1 %r23 <- %r22, $0 92f08c3bdfSopenharmony_ci phisrc.32 %phi7 <- $1 93f08c3bdfSopenharmony_ci cbr %r23, .L11, .L10 94f08c3bdfSopenharmony_ci 95f08c3bdfSopenharmony_ci.L10: 96f08c3bdfSopenharmony_ci load.64 %r24 <- 0[b] 97f08c3bdfSopenharmony_ci load.64 %r25 <- 8[%r24] 98f08c3bdfSopenharmony_ci setne.1 %r26 <- %r25, $0 99f08c3bdfSopenharmony_ci zext.32 %r27 <- (1) %r26 100f08c3bdfSopenharmony_ci phisrc.32 %phi8 <- %r27 101f08c3bdfSopenharmony_ci br .L11 102f08c3bdfSopenharmony_ci 103f08c3bdfSopenharmony_ci.L11: 104f08c3bdfSopenharmony_ci phi.32 %r21 <- %phi7, %phi8 105f08c3bdfSopenharmony_ci phisrc.32 %phi9(return) <- %r21 106f08c3bdfSopenharmony_ci br .L9 107f08c3bdfSopenharmony_ci 108f08c3bdfSopenharmony_ci.L9: 109f08c3bdfSopenharmony_ci phi.32 %r28 <- %phi9(return) 110f08c3bdfSopenharmony_ci ret.32 %r28 111f08c3bdfSopenharmony_ci 112f08c3bdfSopenharmony_ci 113f08c3bdfSopenharmony_ciod: 114f08c3bdfSopenharmony_ci.L12: 115f08c3bdfSopenharmony_ci <entry-point> 116f08c3bdfSopenharmony_ci store.32 %arg1 -> 0[i] 117f08c3bdfSopenharmony_ci store.64 %arg2 -> 0[b] 118f08c3bdfSopenharmony_ci load.32 %r30 <- 0[i] 119f08c3bdfSopenharmony_ci setne.1 %r31 <- %r30, $0 120f08c3bdfSopenharmony_ci phisrc.32 %phi10 <- $1 121f08c3bdfSopenharmony_ci cbr %r31, .L15, .L14 122f08c3bdfSopenharmony_ci 123f08c3bdfSopenharmony_ci.L14: 124f08c3bdfSopenharmony_ci load.64 %r32 <- 0[b] 125f08c3bdfSopenharmony_ci load.64 %r33 <- 16[%r32] 126f08c3bdfSopenharmony_ci setfval.64 %r34 <- 0.000000e+00 127f08c3bdfSopenharmony_ci fcmpune.1 %r35 <- %r33, %r34 128f08c3bdfSopenharmony_ci zext.32 %r36 <- (1) %r35 129f08c3bdfSopenharmony_ci phisrc.32 %phi11 <- %r36 130f08c3bdfSopenharmony_ci br .L15 131f08c3bdfSopenharmony_ci 132f08c3bdfSopenharmony_ci.L15: 133f08c3bdfSopenharmony_ci phi.32 %r29 <- %phi10, %phi11 134f08c3bdfSopenharmony_ci phisrc.32 %phi12(return) <- %r29 135f08c3bdfSopenharmony_ci br .L13 136f08c3bdfSopenharmony_ci 137f08c3bdfSopenharmony_ci.L13: 138f08c3bdfSopenharmony_ci phi.32 %r37 <- %phi12(return) 139f08c3bdfSopenharmony_ci ret.32 %r37 140f08c3bdfSopenharmony_ci 141f08c3bdfSopenharmony_ci 142f08c3bdfSopenharmony_cias: 143f08c3bdfSopenharmony_ci.L16: 144f08c3bdfSopenharmony_ci <entry-point> 145f08c3bdfSopenharmony_ci store.32 %arg1 -> 0[i] 146f08c3bdfSopenharmony_ci store.64 %arg2 -> 0[b] 147f08c3bdfSopenharmony_ci load.32 %r39 <- 0[i] 148f08c3bdfSopenharmony_ci setne.1 %r40 <- %r39, $0 149f08c3bdfSopenharmony_ci phisrc.32 %phi13 <- $0 150f08c3bdfSopenharmony_ci cbr %r40, .L18, .L19 151f08c3bdfSopenharmony_ci 152f08c3bdfSopenharmony_ci.L18: 153f08c3bdfSopenharmony_ci load.64 %r41 <- 0[b] 154f08c3bdfSopenharmony_ci load.32 %r42 <- 0[%r41] 155f08c3bdfSopenharmony_ci lsr.32 %r43 <- %r42, $1 156f08c3bdfSopenharmony_ci trunc.2 %r44 <- (32) %r43 157f08c3bdfSopenharmony_ci setne.1 %r45 <- %r44, $0 158f08c3bdfSopenharmony_ci zext.32 %r46 <- (1) %r45 159f08c3bdfSopenharmony_ci phisrc.32 %phi14 <- %r46 160f08c3bdfSopenharmony_ci br .L19 161f08c3bdfSopenharmony_ci 162f08c3bdfSopenharmony_ci.L19: 163f08c3bdfSopenharmony_ci phi.32 %r38 <- %phi13, %phi14 164f08c3bdfSopenharmony_ci phisrc.32 %phi15(return) <- %r38 165f08c3bdfSopenharmony_ci br .L17 166f08c3bdfSopenharmony_ci 167f08c3bdfSopenharmony_ci.L17: 168f08c3bdfSopenharmony_ci phi.32 %r47 <- %phi15(return) 169f08c3bdfSopenharmony_ci ret.32 %r47 170f08c3bdfSopenharmony_ci 171f08c3bdfSopenharmony_ci 172f08c3bdfSopenharmony_ciau: 173f08c3bdfSopenharmony_ci.L20: 174f08c3bdfSopenharmony_ci <entry-point> 175f08c3bdfSopenharmony_ci store.32 %arg1 -> 0[i] 176f08c3bdfSopenharmony_ci store.64 %arg2 -> 0[b] 177f08c3bdfSopenharmony_ci load.32 %r49 <- 0[i] 178f08c3bdfSopenharmony_ci setne.1 %r50 <- %r49, $0 179f08c3bdfSopenharmony_ci phisrc.32 %phi16 <- $0 180f08c3bdfSopenharmony_ci cbr %r50, .L22, .L23 181f08c3bdfSopenharmony_ci 182f08c3bdfSopenharmony_ci.L22: 183f08c3bdfSopenharmony_ci load.64 %r51 <- 0[b] 184f08c3bdfSopenharmony_ci load.32 %r52 <- 0[%r51] 185f08c3bdfSopenharmony_ci lsr.32 %r53 <- %r52, $3 186f08c3bdfSopenharmony_ci trunc.3 %r54 <- (32) %r53 187f08c3bdfSopenharmony_ci setne.1 %r55 <- %r54, $0 188f08c3bdfSopenharmony_ci zext.32 %r56 <- (1) %r55 189f08c3bdfSopenharmony_ci phisrc.32 %phi17 <- %r56 190f08c3bdfSopenharmony_ci br .L23 191f08c3bdfSopenharmony_ci 192f08c3bdfSopenharmony_ci.L23: 193f08c3bdfSopenharmony_ci phi.32 %r48 <- %phi16, %phi17 194f08c3bdfSopenharmony_ci phisrc.32 %phi18(return) <- %r48 195f08c3bdfSopenharmony_ci br .L21 196f08c3bdfSopenharmony_ci 197f08c3bdfSopenharmony_ci.L21: 198f08c3bdfSopenharmony_ci phi.32 %r57 <- %phi18(return) 199f08c3bdfSopenharmony_ci ret.32 %r57 200f08c3bdfSopenharmony_ci 201f08c3bdfSopenharmony_ci 202f08c3bdfSopenharmony_cial: 203f08c3bdfSopenharmony_ci.L24: 204f08c3bdfSopenharmony_ci <entry-point> 205f08c3bdfSopenharmony_ci store.32 %arg1 -> 0[i] 206f08c3bdfSopenharmony_ci store.64 %arg2 -> 0[b] 207f08c3bdfSopenharmony_ci load.32 %r59 <- 0[i] 208f08c3bdfSopenharmony_ci setne.1 %r60 <- %r59, $0 209f08c3bdfSopenharmony_ci phisrc.32 %phi19 <- $0 210f08c3bdfSopenharmony_ci cbr %r60, .L26, .L27 211f08c3bdfSopenharmony_ci 212f08c3bdfSopenharmony_ci.L26: 213f08c3bdfSopenharmony_ci load.64 %r61 <- 0[b] 214f08c3bdfSopenharmony_ci load.64 %r62 <- 8[%r61] 215f08c3bdfSopenharmony_ci setne.1 %r63 <- %r62, $0 216f08c3bdfSopenharmony_ci zext.32 %r64 <- (1) %r63 217f08c3bdfSopenharmony_ci phisrc.32 %phi20 <- %r64 218f08c3bdfSopenharmony_ci br .L27 219f08c3bdfSopenharmony_ci 220f08c3bdfSopenharmony_ci.L27: 221f08c3bdfSopenharmony_ci phi.32 %r58 <- %phi19, %phi20 222f08c3bdfSopenharmony_ci phisrc.32 %phi21(return) <- %r58 223f08c3bdfSopenharmony_ci br .L25 224f08c3bdfSopenharmony_ci 225f08c3bdfSopenharmony_ci.L25: 226f08c3bdfSopenharmony_ci phi.32 %r65 <- %phi21(return) 227f08c3bdfSopenharmony_ci ret.32 %r65 228f08c3bdfSopenharmony_ci 229f08c3bdfSopenharmony_ci 230f08c3bdfSopenharmony_ciad: 231f08c3bdfSopenharmony_ci.L28: 232f08c3bdfSopenharmony_ci <entry-point> 233f08c3bdfSopenharmony_ci store.32 %arg1 -> 0[i] 234f08c3bdfSopenharmony_ci store.64 %arg2 -> 0[b] 235f08c3bdfSopenharmony_ci load.32 %r67 <- 0[i] 236f08c3bdfSopenharmony_ci setne.1 %r68 <- %r67, $0 237f08c3bdfSopenharmony_ci phisrc.32 %phi22 <- $0 238f08c3bdfSopenharmony_ci cbr %r68, .L30, .L31 239f08c3bdfSopenharmony_ci 240f08c3bdfSopenharmony_ci.L30: 241f08c3bdfSopenharmony_ci load.64 %r69 <- 0[b] 242f08c3bdfSopenharmony_ci load.64 %r70 <- 16[%r69] 243f08c3bdfSopenharmony_ci setfval.64 %r71 <- 0.000000e+00 244f08c3bdfSopenharmony_ci fcmpune.1 %r72 <- %r70, %r71 245f08c3bdfSopenharmony_ci zext.32 %r73 <- (1) %r72 246f08c3bdfSopenharmony_ci phisrc.32 %phi23 <- %r73 247f08c3bdfSopenharmony_ci br .L31 248f08c3bdfSopenharmony_ci 249f08c3bdfSopenharmony_ci.L31: 250f08c3bdfSopenharmony_ci phi.32 %r66 <- %phi22, %phi23 251f08c3bdfSopenharmony_ci phisrc.32 %phi24(return) <- %r66 252f08c3bdfSopenharmony_ci br .L29 253f08c3bdfSopenharmony_ci 254f08c3bdfSopenharmony_ci.L29: 255f08c3bdfSopenharmony_ci phi.32 %r74 <- %phi24(return) 256f08c3bdfSopenharmony_ci ret.32 %r74 257f08c3bdfSopenharmony_ci 258f08c3bdfSopenharmony_ci 259f08c3bdfSopenharmony_ci * check-output-end 260f08c3bdfSopenharmony_ci */ 261