]> granicus.if.org Git - clang/commit
Add __builtin_assume and __builtin_assume_aligned using @llvm.assume.
authorHal Finkel <hfinkel@anl.gov>
Sun, 7 Sep 2014 22:58:14 +0000 (22:58 +0000)
committerHal Finkel <hfinkel@anl.gov>
Sun, 7 Sep 2014 22:58:14 +0000 (22:58 +0000)
commit687b32ee47fa9c025c286b9f35a0dddb53defeef
treec2be1350d3fe134eeaf7e8b9b4117fd6e8b4aafe
parente7128878bd2e17bdb9a0c57e16fa72583563a116
Add __builtin_assume and __builtin_assume_aligned using @llvm.assume.

This makes use of the recently-added @llvm.assume intrinsic to implement a
__builtin_assume(bool) intrinsic (to provide additional information to the
optimizer). This hooks up __assume in MS-compatibility mode to mirror
__builtin_assume (the semantics have been intentionally kept compatible), and
implements GCC's __builtin_assume_aligned as assume((p - o) & mask == 0). LLVM
now contains special logic to deal with assumptions of this form.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@217349 91177308-0d34-0410-b5e6-96231b3b80d8
15 files changed:
docs/LanguageExtensions.rst
include/clang/Basic/Builtins.def
include/clang/Basic/DiagnosticSemaKinds.td
include/clang/Sema/Sema.h
lib/AST/ExprConstant.cpp
lib/CodeGen/CGBuiltin.cpp
lib/CodeGen/CGExpr.cpp
lib/CodeGen/CodeGenFunction.h
lib/Sema/SemaChecking.cpp
lib/Sema/SemaDeclAttr.cpp
test/CodeGen/builtin-assume-aligned.c [new file with mode: 0644]
test/CodeGen/builtin-assume.c
test/Sema/builtin-assume-aligned.c [new file with mode: 0644]
test/Sema/builtin-assume.c
test/SemaCXX/builtin-assume-aligned-tmpl.cpp [new file with mode: 0644]