brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · f2a944b Raw
78 lines · c
1// RUN: %clang_cc1 -fsyntax-only -verify %s2// RUN: %clang_cc1 -fsyntax-only -fwrapv-pointer -verify=fwrapv %s3 4// fwrapv-no-diagnostics5 6int add_ptr_idx_ult_ptr(const char *ptr, unsigned index) {7  return ptr + index < ptr; // expected-warning {{pointer comparison always evaluates to false}}8}9 10int add_idx_ptr_ult_ptr(const char *ptr, unsigned index) {11  return index + ptr < ptr; // expected-warning {{pointer comparison always evaluates to false}}12}13 14int ptr_ugt_add_ptr_idx(const char *ptr, unsigned index) {15  return ptr > ptr + index; // expected-warning {{pointer comparison always evaluates to false}}16}17 18int ptr_ugt_add_idx_ptr(const char *ptr, unsigned index) {19  return ptr > index + ptr; // expected-warning {{pointer comparison always evaluates to false}}20}21 22int add_ptr_idx_uge_ptr(const char *ptr, unsigned index) {23  return ptr + index >= ptr; // expected-warning {{pointer comparison always evaluates to true}}24}25 26int add_idx_ptr_uge_ptr(const char *ptr, unsigned index) {27  return index + ptr >= ptr; // expected-warning {{pointer comparison always evaluates to true}}28}29 30int ptr_ule_add_ptr_idx(const char *ptr, unsigned index) {31  return ptr <= ptr + index; // expected-warning {{pointer comparison always evaluates to true}}32}33 34int ptr_ule_add_idx_ptr(const char *ptr, unsigned index) {35  return ptr <= index + ptr; // expected-warning {{pointer comparison always evaluates to true}}36}37 38int add_ptr_idx_ult_ptr_array(unsigned index) {39  char ptr[10];40  return ptr + index < ptr; // expected-warning {{pointer comparison always evaluates to false}}41}42 43// Negative tests with wrong predicate.44 45int add_ptr_idx_ule_ptr(const char *ptr, unsigned index) {46  return ptr + index <= ptr;47}48 49int add_ptr_idx_ugt_ptr(const char *ptr, unsigned index) {50  return ptr + index > ptr;51}52 53int ptr_uge_add_idx_ptr(const char *ptr, unsigned index) {54  return ptr >= index + ptr;55}56 57int ptr_ult_add_idx_ptr(const char *ptr, unsigned index) {58  return ptr < index + ptr;59}60 61// Negative test with signed index.62 63int add_ptr_idx_ult_ptr_signed(const char *ptr, int index) {64  return ptr + index < ptr;65}66 67// Negative test with unrelated pointers. 68 69int add_ptr_idx_ult_ptr2(const char *ptr, const char *ptr2, unsigned index) {70  return ptr + index < ptr2;71}72 73// Negative test with non-pointer operands.74 75int add_ptr_idx_ult_ptr_not_pointer(unsigned ptr, unsigned index) {76  return ptr + index < ptr;77}78