// RUN: rm -rf %t && mkdir %t
// RUN: mkdir -p %t/ctudir2
// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu \
// RUN: -emit-pch -o %t/ctudir2/ctu-other.c.ast %S/Inputs/ctu-other.c
// RUN: cp %S/Inputs/ctu-other.c.externalDefMap.ast-dump.txt %t/ctudir2/externalDefMap.txt
// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -std=c89 -analyze \
// RUN: -analyzer-checker=core,debug.ExprInspection \
// RUN: -analyzer-config eagerly-assume=false \
// RUN: -analyzer-config experimental-enable-naive-ctu-analysis=true \
// RUN: -analyzer-config ctu-dir=%t/ctudir2 \
// RUN: -analyzer-config ctu-phase1-inlining=none \
// RUN: -verify=newctu %s
// Simulate the behavior of the previous CTU implementation by inlining all
// functions during the first phase. This way, the second phase is a noop.
// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -std=c89 -analyze \
// RUN: -analyzer-checker=core,debug.ExprInspection \
// RUN: -analyzer-config eagerly-assume=false \
// RUN: -analyzer-config experimental-enable-naive-ctu-analysis=true \
// RUN: -analyzer-config ctu-dir=%t/ctudir2 \
// RUN: -analyzer-config ctu-phase1-inlining=all \
// RUN: -verify=oldctu %s
void ;
// A function that's definition is unknown both for single-tu (stu) and ctu
// mode.
int ;
void
// Test typedef and global variable in function.
typedef struct FooBar;
extern FooBar fb;
int ;
void
// Test enums.
int ;
;
void
// Test that asm import does not fail.
int ;
int
// Test reporting error in a macro.
;
int ;
void
// The external function prototype is incomplete.
// warning:implicit functions are prohibited by c99
void
// Tests the import of functions that have a struct parameter
// defined in its prototype.
;
int ;
void
int ;
void