brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 887817b Raw
62 lines · c
1// Check the case when only the StreamChecker is enabled.2// RUN: %clang_analyze_cc1 %s \3// RUN:   -analyzer-checker=core,unix.Stream \4// RUN:   -analyzer-config unix.Stream:Pedantic=true \5// RUN:   -analyzer-checker=debug.ExprInspection \6// RUN:   -analyzer-config eagerly-assume=false \7// RUN:   -triple x86_64-unknown-linux \8// RUN:   -verify=stream9 10// Check the case when only the StdLibraryFunctionsChecker is enabled.11// RUN: %clang_analyze_cc1 %s \12// RUN:   -analyzer-checker=unix.StdCLibraryFunctions \13// RUN:   -analyzer-config unix.StdCLibraryFunctions:DisplayLoadedSummaries=true \14// RUN:   -analyzer-checker=debug.ExprInspection \15// RUN:   -analyzer-config eagerly-assume=false \16// RUN:   -triple x86_64-unknown-linux \17// RUN:   -verify=stdLib 2>&1 | FileCheck %s18 19// Check the case when both the StreamChecker and the20// StdLibraryFunctionsChecker are enabled.21// RUN: %clang_analyze_cc1 %s \22// RUN:   -analyzer-checker=core,unix.Stream \23// RUN:   -analyzer-config unix.Stream:Pedantic=true \24// RUN:   -analyzer-checker=unix.StdCLibraryFunctions \25// RUN:   -analyzer-config unix.StdCLibraryFunctions:DisplayLoadedSummaries=true \26// RUN:   -analyzer-checker=debug.ExprInspection \27// RUN:   -analyzer-config eagerly-assume=false \28// RUN:   -triple x86_64-unknown-linux \29// RUN:   -verify=both 2>&1 | FileCheck %s30 31// Verify that the summaries are loaded when the StdLibraryFunctionsChecker is32// enabled.33//      CHECK: Loaded summary for: int getchar(void)34// CHECK-NEXT: Loaded summary for: __size_t fread(void *restrict, size_t, size_t, FILE *restrict)35// CHECK-NEXT: Loaded summary for: __size_t fwrite(const void *restrict, size_t, size_t, FILE *restrict)36 37#include "Inputs/system-header-simulator.h"38 39void clang_analyzer_eval(int);40 41void test_fread_fwrite(FILE *fp, int *buf) {42  fp = fopen("foo", "r");43  if (!fp)44    return;45  size_t x = fwrite(buf, sizeof(int), 10, fp);46 47  clang_analyzer_eval(x <= 10); // \48 // stream-warning{{TRUE}} \49 // stdLib-warning{{TRUE}} \50 // both-warning{{TRUE}}51 52  clang_analyzer_eval(x == 10); // \53  // stream-warning{{TRUE}} \54  // stream-warning{{FALSE}} \55  // stdLib-warning{{TRUE}} \56  // stdLib-warning{{FALSE}} \57  // both-warning{{TRUE}} \58  // both-warning{{FALSE}}59 60  fclose(fp);61}62