1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
// Test ldc.attributes.noSanitize UDA
// RUN: %ldc -c -w -de -output-ll -fsanitize=address,thread -of=%t.normal.ll %s -d-version=NORMAL && FileCheck %s --check-prefix=NORMAL < %t.normal.ll
// RUN: %ldc -c -w -de -output-ll -fsanitize=address,thread -of=%t.nosanitize.ll %s -d-version=NOSANITIZE && FileCheck %s --check-prefix=NOSANITIZE < %t.nosanitize.ll
// RUN: %ldc -wi -c -fsanitize=address -d-version=WARNING %s 2>&1 | FileCheck %s --check-prefix=WARNING
import ldc.attributes;
extern (C): // For easier name mangling
version (NORMAL)
{
// NORMAL: sanitize_address
// NORMAL: sanitize_thread
void foo()
{
}
}
else version (NOSANITIZE)
{
// NOSANITIZE-NOT: sanitize_address
// NOSANITIZE: sanitize_thread
// NOSANITIZE-NOT: sanitize_address
@noSanitize("address")
void foo_noaddress()
{
}
@noSanitize("thread")
@noSanitize("address")
void foo_nothread_noaddress()
{
}
}
else version (WARNING)
{
// WARNING: attr_nosanitize.d([[@LINE+1]]){{.*}} Unrecognized sanitizer name 'invalid_name'
@noSanitize("invalid_name")
void foo_error()
{
}
}
|