brintos

brintos / llvm-project-archived public Read only

0
0
Text · 805 B · af61b78 Raw
35 lines · cpp
1// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s -fsanitize=bool,enum | FileCheck %s2 3enum E {4  a = 1,5  b = 2,6  c = 37};8 9struct S {10  E e1 : 10;11};12 13// CHECK-LABEL: define{{.*}} i32 @_Z4loadP1S14E load(S *s) {15  // CHECK: [[LOAD:%.*]] = load i16, ptr {{.*}}16  // CHECK: [[CLEAR:%.*]] = and i16 [[LOAD]], 102317  // CHECK: [[CAST:%.*]] = zext i16 [[CLEAR]] to i3218  // CHECK: icmp ule i32 [[CAST]], 3, !nosanitize19  // CHECK: call void @__ubsan_handle_load_invalid_value20  return s->e1;21}22 23struct Bool {24  bool b1 : 1;25  bool b2 : 7;26  bool b3 : 16;27};28 29// CHECK-LABEL: define{{.*}} zeroext i1 @_Z13load_cpp_boolP4Bool30bool load_cpp_bool(Bool *b) {31  // CHECK-NOT: call void @__ubsan_handle_load_invalid_value32  // CHECK-NOT: !nosanitize33  return b->b1 || b->b2 || b->b3;34}35