aboutsummaryrefslogtreecommitdiff
path: root/clang/test/Analysis/builtin-functions.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2014-09-09 21:42:16 +0000
committerJordan Rose <jordan_rose@apple.com>2014-09-09 21:42:16 +0000
commit21933ccdd759c852dc56e1c8a945d3e3744bc53e (patch)
tree6507d844044f69da2a8ed8fc4fb49fda8c4f84b9 /clang/test/Analysis/builtin-functions.cpp
parent39de3110712cb4547a835777310dbead46c1a002 (diff)
downloadllvm-21933ccdd759c852dc56e1c8a945d3e3744bc53e.zip
llvm-21933ccdd759c852dc56e1c8a945d3e3744bc53e.tar.gz
llvm-21933ccdd759c852dc56e1c8a945d3e3744bc53e.tar.bz2
Teach the analyzer that __builtin_assume_aligned returns its first argument.
Patch by Daniel Fahlgren! llvm-svn: 217461
Diffstat (limited to 'clang/test/Analysis/builtin-functions.cpp')
-rw-r--r--clang/test/Analysis/builtin-functions.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/clang/test/Analysis/builtin-functions.cpp b/clang/test/Analysis/builtin-functions.cpp
index 72d5ad2..d3afab5b 100644
--- a/clang/test/Analysis/builtin-functions.cpp
+++ b/clang/test/Analysis/builtin-functions.cpp
@@ -22,3 +22,31 @@ void testSize() {
clang_analyzer_eval(i == 0); // expected-warning{{TRUE}}
}
+
+void test_assume_aligned_1(char *p) {
+ char *q;
+
+ q = (char*) __builtin_assume_aligned(p, 16);
+ clang_analyzer_eval(p == q); // expected-warning{{TRUE}}
+}
+
+void test_assume_aligned_2(char *p) {
+ char *q;
+
+ q = (char*) __builtin_assume_aligned(p, 16, 8);
+ clang_analyzer_eval(p == q); // expected-warning{{TRUE}}
+}
+
+void test_assume_aligned_3(char *p) {
+ void *q;
+
+ q = __builtin_assume_aligned(p, 16, 8);
+ clang_analyzer_eval(p == q); // expected-warning{{TRUE}}
+}
+
+void test_assume_aligned_4(char *p) {
+ char *q;
+
+ q = (char*) __builtin_assume_aligned(p + 1, 16);
+ clang_analyzer_eval(p == q); // expected-warning{{FALSE}}
+}