diff options
| -rw-r--r-- | compiler-rt/lib/asan/lit_tests/TestCases/inline.cc | 19 | ||||
| -rw-r--r-- | compiler-rt/lib/msan/lit_tests/inline.cc | 20 |
2 files changed, 39 insertions, 0 deletions
diff --git a/compiler-rt/lib/asan/lit_tests/TestCases/inline.cc b/compiler-rt/lib/asan/lit_tests/TestCases/inline.cc new file mode 100644 index 00000000000..792aff59f4b --- /dev/null +++ b/compiler-rt/lib/asan/lit_tests/TestCases/inline.cc @@ -0,0 +1,19 @@ +// RUN: %clangxx_asan -O3 %s -o %t && %t + +// Test that no_sanitize_address attribute applies even when the function would +// be normally inlined. + +#include <stdlib.h> + +__attribute__((no_sanitize_address)) +int f(int *p) { + return *p; // BOOOM?? Nope! +} + +int main(int argc, char **argv) { + int * volatile x = (int*)malloc(2*sizeof(int) + 2); + int res = f(x + 2); + if (res) + exit(0); + return 0; +} diff --git a/compiler-rt/lib/msan/lit_tests/inline.cc b/compiler-rt/lib/msan/lit_tests/inline.cc new file mode 100644 index 00000000000..4aeb15583f8 --- /dev/null +++ b/compiler-rt/lib/msan/lit_tests/inline.cc @@ -0,0 +1,20 @@ +// RUN: %clangxx_msan -O3 %s -o %t && %t + +// Test that no_sanitize_memory attribute applies even when the function would +// be normally inlined. + +#include <stdlib.h> + +__attribute__((no_sanitize_memory)) +int f(int *p) { + if (*p) // BOOOM?? Nope! + exit(0); + return 0; +} + +int main(int argc, char **argv) { + int x; + int * volatile p = &x; + int res = f(p); + return 0; +} |

