Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion clang/test/3C/allarrays.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines --check-prefixes="CHECK" %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines --check-prefixes="CHECK" %s
// RUN: 3c -alltypes %s | %clang -c -f3c-tool -fcheckedc-extension -x c -o %t1.unused -
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do you need the .unused bit at the end? I presume you've confirmed that this file is deleted after all the tests are run?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't need it, but I wanted an indication of what this particular temp file is used for.


int* foo();
//CHECK: _Array_ptr<int> foo(_Array_ptr<int> r);
Expand Down
8 changes: 4 additions & 4 deletions clang/test/3C/arrboundsadvanced.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s

// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -f3c-tool -fcheckedc-extension -x c -o %t1.unused -

/*
Advanced array-bounds inference (based on control-dependencies).
Expand All @@ -17,12 +17,12 @@ struct foo1 {
unsigned ml;
};
//CHECK: _Array_ptr<int> x : count(ml);
unsigned FooLenD;
unsigned FooLen;
struct foo **FL;
int *intarr;
//CHECK: _Array_ptr<_Ptr<struct foo>> FL : count(FooLen) = ((void *)0);
//CHECK: _Array_ptr<int> intarr = ((void *)0);
unsigned FooLenD;
unsigned FooLen;
void intcopy(int *arr, int *ptr, int len) {
int i;
for (i=0; i<len; i++) {
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/arrboundsbasic.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -fcheckedc-extension -x c -o %t1.unused -


/*
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/arrboundsbasicinfer.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -fcheckedc-extension -x c -o %t1.unused -


/*
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/arrboundsbyte.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -fcheckedc-extension -x c -o %t1.unused -


/*
Expand Down
6 changes: 4 additions & 2 deletions clang/test/3C/arrboundsheuristics.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
//
// Checks wrong array heuristics.
//
//RUN: 3c -alltypes %s -- | FileCheck -match-full-lines -check-prefixes="CHECK_ALL","CHECK" %s
//RUN: 3c %s -- | FileCheck -match-full-lines -check-prefixes="CHECK_NOALL","CHECK" %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines -check-prefixes="CHECK_ALL","CHECK" %s
// RUN: 3c -alltypes %s | %clang -c -f3c-tool -fcheckedc-extension -x c -o %t1.unused -
// RUN: 3c %s | FileCheck -match-full-lines -check-prefixes="CHECK_NOALL","CHECK" %s
// RUN: 3c %s | %clang -c -fcheckedc-extension -x c -o %t2.unused -

int *glob;
int lenplusone;
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/arrboundsinfer2.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -fcheckedc-extension -x c -o %t1.unused -


/*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// XFAIL: *
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -f3c-tool -fcheckedc-extension -x c -o %t1.unused -

// XFAIL: *

/*
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/basic_inter.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
//
// Tests properties about constraint propagation between functions.
//
// RUN: 3c %s -- | FileCheck -match-full-lines %s
// RUN: 3c %s | FileCheck -match-full-lines %s
// RUN: 3c %s | %clang -c -fcheckedc-extension -x c -o %t1.unused -
//

int funcdecl(int *ptr, int *iptr, int *wild);
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/basic_inter_field_ntarr.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
//
// Tests rewriting of Nt_array_ptrs within structure fields

// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -f3c-tool -fcheckedc-extension -x c -o %t1.unused -
//

unsigned long strlen(const char *s : itype(_Nt_array_ptr<const char>)) ;
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/basic_inter_ntarr.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
//
// Tests rewriting and propagation of Nt_array_ptr constraints across functions.
//
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -fcheckedc-extension -x c -o %t1.unused -
//
char *strstr(const char *s1 : itype(_Nt_array_ptr<const char>),
const char *s2 : itype(_Nt_array_ptr<const char>)) : itype(_Nt_array_ptr<char>);
Expand Down
5 changes: 3 additions & 2 deletions clang/test/3C/basic_local_ntarr.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
//
// Tests basic rewriting of Nt_array_ptrs

// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -f3c-tool -fcheckedc-extension -x c -o %t1.unused -
//

unsigned long strlen(const char *s : itype(_Nt_array_ptr<const char>));
Expand All @@ -18,7 +19,7 @@ int main() {
int b;
// this will make a as NTARR
b = strlen(a);
// this will make C as NTArr
// this will make C as PTR
c = strstr("Hello", "World");
// this should mark d as WILD.
d = (int*)0xdeadbeef;
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/basic_return_itype.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
//
// Tests properties about rewriter for return type when it is an itype
//
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -fcheckedc-extension -x c -o %t1.unused -
//

static int funcvar;
Expand Down
6 changes: 3 additions & 3 deletions clang/test/3C/checkedregionvoid.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// RUN: 3c -addcr %s -- | FileCheck -match-full-lines --check-prefixes="CHECK" %s
// RUN: 3c -addcr %s | FileCheck -match-full-lines --check-prefixes="CHECK" %s
// RUN: 3c -addcr %s | %clang -c -fcheckedc-extension -x c -o %t1.unused -

#include "dummy.h"
// Dummy to cause output
void unsafe(void *);// Dummy to cause output
void f(int *x) {}
//CHECK: void f(_Ptr<int> x) _Checked {}

Expand Down
7 changes: 5 additions & 2 deletions clang/test/3C/contextsensitivebounds.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
Test for context sensitive bounds.
**/

// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines -check-prefixes="CHECK_ALL","CHECK" %s
// RUN: 3c %s -- | FileCheck -match-full-lines -check-prefixes="CHECK_NOALL","CHECK" %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines -check-prefixes="CHECK_ALL","CHECK" %s
// RUN: 3c -alltypes %s | %clang -c -fcheckedc-extension -x c -o %t1.unusedl -
// RUN: 3c %s | FileCheck -match-full-lines -check-prefixes="CHECK_NOALL","CHECK" %s
// RUN: 3c %s | %clang -c -fcheckedc-extension -x c -o %t2.unused -

_Itype_for_any(T) void *somefunc(unsigned long size) : itype(_Array_ptr<T>) byte_count(size);
struct hash_node
{
Expand Down
7 changes: 5 additions & 2 deletions clang/test/3C/contextsensitivebounds1.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
Test for context sensitive bounds for internal functions.
**/

// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines -check-prefixes="CHECK_ALL","CHECK" %s
// RUN: 3c %s -- | FileCheck -match-full-lines -check-prefixes="CHECK_NOALL","CHECK" %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines -check-prefixes="CHECK_ALL","CHECK" %s
// RUN: 3c -alltypes %s | %clang -c -fcheckedc-extension -x c -o %t1.unused -
// RUN: 3c %s | FileCheck -match-full-lines -check-prefixes="CHECK_NOALL","CHECK" %s
// RUN: 3c %s | %clang -c -fcheckedc-extension -x c -o %t2.unused -

_Itype_for_any(T) void *somefunc(unsigned long size) : itype(_Array_ptr<T>) byte_count(size);
struct hash_node
{
Expand Down
5 changes: 4 additions & 1 deletion clang/test/3C/difftypes_xfail1.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
//RUN: 3c -base-dir=%S -output-postfix=checked %s %S/difftypes_xfail2.c
// XFAIL: *

// XFAIL: *

// The desired behavior in this case is to fail, so other checks are omitted

_Ptr<int> foo(int, char);
3 changes: 3 additions & 0 deletions clang/test/3C/difftypes_xfail2.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
//RUN: 3c -base-dir=%S -output-postfix=checked %s %S/difftypes_xfail1.c

// XFAIL: *

// The desired behavior in this case is to fail, so other checks are omitted

int * foo(int, char *);
2 changes: 0 additions & 2 deletions clang/test/3C/dummy.h

This file was deleted.

2 changes: 1 addition & 1 deletion clang/test/3C/extGVarbar1.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
//RUN: %clang -c %S/extGVarbar1.checked.c %S/extGVarbar2.checked.c
//RUN: rm %S/extGVarbar1.checked.c %S/extGVarbar2.checked.c

/*first of the bar files*/
// This test cannot use pipes because it requires multiple output files

extern int *x;
/*y will be defined in bar2.c*/
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/extGVarbar2.c
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
//RUN: 3c -base-dir=%S -output-postfix=checked2 %s %S/extGVarbar1.c
//RUN: FileCheck -match-full-lines --input-file %S/extGVarbar2.checked2.c %s
//RUN: %clang -c %S/extGVarbar2.checked2.c %S/extGVarbar1.checked2.c
//RUN: rm %S/extGVarbar1.checked2.c %S/extGVarbar2.checked2.c

/*second of the bar files*/
// This test cannot use pipes because it requires multiple output files

int w = 2;
int *y = &w;
Expand Down
2 changes: 2 additions & 0 deletions clang/test/3C/extGVarm1.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
//RUN: %clang -c %S/extGVarm1.checked.c %S/extGVarm2.checked.c %S/extGVarm3.checked.c
//RUN: rm %S/extGVarm1.checked.c %S/extGVarm2.checked.c %S/extGVarm3.checked.c

// This test cannot use pipes because it requires multiple output files

extern int *y;
//CHECK: extern _Ptr<int> y;

Expand Down
3 changes: 3 additions & 0 deletions clang/test/3C/extGVarm2.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
//RUN: 3c -base-dir=%S -output-postfix=checked2 %s %S/extGVarm1.c %S/extGVarm3.c
//RUN: FileCheck -match-full-lines --input-file %S/extGVarm2.checked2.c %s
//RUN: %clang -c %S/extGVarm2.checked2.c %S/extGVarm3.checked2.c %S/extGVarm1.checked2.c
//RUN: rm %S/extGVarm1.checked2.c %S/extGVarm2.checked2.c %S/extGVarm3.checked2.c

// This test cannot use pipes because it requires multiple output files

extern int *x;
//CHECK: extern int *x;

Expand Down
3 changes: 3 additions & 0 deletions clang/test/3C/extGVarm3.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
//RUN: 3c -base-dir=%S -output-postfix=checked3 %s %S/extGVarm1.c %S/extGVarm2.c
//RUN: FileCheck -match-full-lines --input-file %S/extGVarm3.checked3.c %s
//RUN: %clang -c %S/extGVarm3.checked3.c %S/extGVarm2.checked3.c %S/extGVarm1.checked3.c
//RUN: rm %S/extGVarm1.checked3.c %S/extGVarm2.checked3.c %S/extGVarm3.checked3.c

// This test cannot use pipes because it requires multiple output files

extern int *x;
//CHECK: extern int *x;

Expand Down
6 changes: 5 additions & 1 deletion clang/test/3C/hash.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines -check-prefixes="CHECK_ALL","CHECK" %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines -check-prefixes="CHECK_ALL","CHECK" %s

// Currently not possible to run clang on the output,
// there is an error reported at https://github.com/correctcomputation/checkedc-clang/issues/349

/*
* Based on hash.c in Very Secure FTPd
*/
Expand Down
5 changes: 0 additions & 5 deletions clang/test/3C/lit.local.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1 @@
# import os
config.suffixes = ['.c']
# config.environment = {
# 'CHECKED_CPATH':'/Users/mwh/checkedc/checkedc/include/:',
# 'PATH':'/Users/mwh/checkedc/checkedc-clang/llvm/cmake-debug-build/bin:'+os.getenv('PATH')
# }
3 changes: 2 additions & 1 deletion clang/test/3C/lowerbound.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Generates graph q0 --> ARR --> q1, to confirm that bound bound
// constraints are properly solved
// The following test is supposed to fail with the current tool.
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -f3c-tool -fcheckedc-extension -x c -o %t.unused -
//

_Array_ptr<int> foo(_Array_ptr<int> x);
Expand Down
15 changes: 0 additions & 15 deletions clang/test/3C/lowerboundBUG.c

This file was deleted.

3 changes: 2 additions & 1 deletion clang/test/3C/manyprotos.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines --check-prefixes="CHECK" %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines --check-prefixes="CHECK" %s
// RUN: 3c -alltypes %s | %clang -c -fcheckedc-extension -x c -o %t1.unused -

int foo();
//CHECK: int foo(_Array_ptr<int> x : count(y), int y);
Expand Down
5 changes: 4 additions & 1 deletion clang/test/3C/multidef_xfail1.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
//RUN: 3c -base-dir=%S -output-postfix=checked %s %S/multidef_xfail2.c
// RUN: 3c -base-dir=%S -output-postfix=checked %s %S/multidef_xfail2.c

// XFAIL: *

// The desired behavior in this case is to fail, so other checks are omitted

_Ptr<int> foo(int x, char * y) {
x = x + 4;
int *z = &x;
Expand Down
7 changes: 5 additions & 2 deletions clang/test/3C/multidef_xfail2.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
//RUN: 3c -base-dir=%S -output-postfix=checked %s %S/multidef_xfail1.c
// XFAIL: *
// RUN: 3c -base-dir=%S -output-postfix=checked %s %S/multidef_xfail1.c

// XFAIL: *

// The desired behavior in this case is to fail, so other checks are omitted

int * foo(int x, _Ptr<char> y) {
x = x + 4;
Expand Down
1 change: 1 addition & 0 deletions clang/test/3C/no_casts.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: 3c %s | count 0
// RUN: 3c %s | %clang -c -fcheckedc-extension -x c -o %t.unused -

void foo(char *a);
void bar(int *a);
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/noproto.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: 3c -addcr %s -- | FileCheck -match-full-lines --check-prefixes="CHECK" %s
// RUN: 3c -addcr %s | FileCheck -match-full-lines --check-prefixes="CHECK" %s
// RUN: 3c -addcr %s | %clang -c -fcheckedc-extension -x c -o %t.unused -

int foo(int x) {
//CHECK: int foo(int x) {
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/order.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: 3c %s -- | FileCheck -match-full-lines %s
// RUN: 3c %s | FileCheck -match-full-lines %s
// RUN: 3c %s | %clang -c -fcheckedc-extension -x c -o %t.unused -

int foo1(int x, int *y);
//CHECK: int foo1(int x, int *y : itype(_Ptr<int>));
Expand Down
11 changes: 6 additions & 5 deletions clang/test/3C/partial_checked_arr.c
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// RUN: 3c -addcr -alltypes %s -- | FileCheck -match-full-lines -check-prefixes="CHECK_ALL","CHECK" %s
// RUN: 3c -addcr %s -- | FileCheck -match-full-lines -check-prefixes="CHECK_NOALL","CHECK" %s
// RUN: 3c -alltypes -output-postfix=checked %s
// RUN: 3c -alltypes %S/partial_checked_arr.checked.c -- | count 0
// RUN: rm %S/partial_checked_arr.checked.c
// RUN: 3c -addcr -alltypes %s | FileCheck -match-full-lines -check-prefixes="CHECK_ALL","CHECK" %s
// RUN: 3c -addcr -alltypes %s | %clang -c -f3c-tool -fcheckedc-extension -x c -o %t1.unused -
// RUN: 3c -addcr %s | FileCheck -match-full-lines -check-prefixes="CHECK_NOALL","CHECK" %s
// RUN: 3c -addcr %s | %clang -c -f3c-tool -fcheckedc-extension -x c -o %t2.unused -
// RUN: 3c -alltypes %s > %t
// RUN: 3c -alltypes %t | count 0

int strcmp(const char *src1 : itype(_Nt_array_ptr<const char>),
const char *src2 : itype(_Nt_array_ptr<const char>));
Expand Down
3 changes: 2 additions & 1 deletion clang/test/3C/patch_issue_272.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -f3c-tool -fcheckedc-extension -x c -o %t.unused -

/********************************************************************/
/* Tests to keep pointer level from */
Expand Down
5 changes: 3 additions & 2 deletions clang/test/3C/pointerarithm.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// RUN: 3c -alltypes -addcr %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes -addcr %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes -addcr %s | %clang -c -fcheckedc-extension -x c -o %t.unused -
// RUN: 3c -addcr -alltypes -output-postfix=checked %s
// RUN: 3c -addcr -alltypes %S/pointerarithm.checked.c -- | count 0
// RUN: 3c -addcr -alltypes %S/pointerarithm.checked.c | count 0
// RUN: rm %S/pointerarithm.checked.c

#include <stddef.h>
Expand Down
1 change: 1 addition & 0 deletions clang/test/3C/prototype_success2.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//RUN: 3c -base-dir=%S -output-postfix=checked2 %s %S/prototype_success1.c
//RUN: FileCheck -match-full-lines --input-file %S/prototype_success2.checked2.c %s
//RUN: %clang -c %S/prototype_success1.checked2.c %S/prototype_success2.checked2.c
//RUN: rm %S/prototype_success1.checked2.c %S/prototype_success2.checked2.c

/*Note: this file is part of a multi-file regression test in tandem with prototype_success1.c
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@
//
// Tests 3c tool for any regressions.
//
// The following test is supposed to fail with the current tool.
// XFAIL: *
// RUN: 3c -alltypes %s -- | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | FileCheck -match-full-lines %s
// RUN: 3c -alltypes %s | %clang -c -fcheckedc-extension -x c -o %t.unused -
//
// XFAIL: *

Expand Down
4 changes: 3 additions & 1 deletion clang/test/3C/root_cause.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
// RUN: 3c -extra-arg="-Wno-everything" -alltypes -warn-root-cause %s 2>&1 1>/dev/null | FileCheck %s
// RUN: 3c -extra-arg="-Wno-everything" -alltypes -warn-root-cause %s 2>&1 1>%t.unused | FileCheck %s

// This test is unusual in that it checks for the errors in the code

#include <stddef.h>
extern _Itype_for_any(T) void *malloc(size_t size) : itype(_Array_ptr<T>) byte_count(size);
Expand Down
Loading