Mercurial > hg > CbC > CbC_llvm
view clang/test/Analysis/std-c-library-functions-vs-stream-checker.c @ 236:c4bab56944e8 llvm-original
LLVM 16
author | kono |
---|---|
date | Wed, 09 Nov 2022 17:45:10 +0900 |
parents | 79ff65ed7e25 |
children | 1f2b6ac9f198 |
line wrap: on
line source
// Check the case when only the StreamChecker is enabled. // RUN: %clang_analyze_cc1 %s \ // RUN: -analyzer-checker=core,alpha.unix.Stream \ // RUN: -analyzer-checker=debug.ExprInspection \ // RUN: -analyzer-config eagerly-assume=false \ // RUN: -triple x86_64-unknown-linux \ // RUN: -verify=stream // Check the case when only the StdLibraryFunctionsChecker is enabled. // RUN: %clang_analyze_cc1 %s \ // RUN: -analyzer-checker=apiModeling.StdCLibraryFunctions \ // RUN: -analyzer-config apiModeling.StdCLibraryFunctions:DisplayLoadedSummaries=true \ // RUN: -analyzer-checker=debug.ExprInspection \ // RUN: -analyzer-config eagerly-assume=false \ // RUN: -triple x86_64-unknown-linux \ // RUN: -verify=stdLib 2>&1 | FileCheck %s // Check the case when both the StreamChecker and the // StdLibraryFunctionsChecker are enabled. // RUN: %clang_analyze_cc1 %s \ // RUN: -analyzer-checker=core,alpha.unix.Stream \ // RUN: -analyzer-checker=apiModeling.StdCLibraryFunctions \ // RUN: -analyzer-config apiModeling.StdCLibraryFunctions:DisplayLoadedSummaries=true \ // RUN: -analyzer-checker=debug.ExprInspection \ // RUN: -analyzer-config eagerly-assume=false \ // RUN: -triple x86_64-unknown-linux \ // RUN: -verify=both 2>&1 | FileCheck %s // Verify that the summaries are loaded when the StdLibraryFunctionsChecker is // enabled. // CHECK: Loaded summary for: int getchar(void) // CHECK-NEXT: Loaded summary for: unsigned long fread(void *restrict, size_t, size_t, FILE *restrict) // CHECK-NEXT: Loaded summary for: unsigned long fwrite(const void *restrict, size_t, size_t, FILE *restrict) #include "Inputs/system-header-simulator.h" void clang_analyzer_eval(int); void test_fread_fwrite(FILE *fp, int *buf) { fp = fopen("foo", "r"); if (!fp) return; size_t x = fwrite(buf, sizeof(int), 10, fp); clang_analyzer_eval(x <= 10); // \ // stream-warning{{TRUE}} \ // stdLib-warning{{TRUE}} \ // both-warning{{TRUE}} \ clang_analyzer_eval(x == 10); // \ // stream-warning{{TRUE}} \ // stream-warning{{FALSE}} \ // stdLib-warning{{UNKNOWN}} \ // both-warning{{TRUE}} \ // both-warning{{FALSE}} fclose(fp); }