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
Showing
- docs/LanguageExtensions.rst 39 additions, 2 deletionsdocs/LanguageExtensions.rst
- include/clang/Basic/Builtins.def 4 additions, 0 deletionsinclude/clang/Basic/Builtins.def
- include/clang/Basic/DiagnosticSemaKinds.td 3 additions, 2 deletionsinclude/clang/Basic/DiagnosticSemaKinds.td
- include/clang/Sema/Sema.h 1 addition, 0 deletionsinclude/clang/Sema/Sema.h
- lib/AST/ExprConstant.cpp 2 additions, 0 deletionslib/AST/ExprConstant.cpp
- lib/CodeGen/CGBuiltin.cpp 21 additions, 3 deletionslib/CodeGen/CGBuiltin.cpp
- lib/CodeGen/CGExpr.cpp 28 additions, 0 deletionslib/CodeGen/CGExpr.cpp
- lib/CodeGen/CodeGenFunction.h 4 additions, 0 deletionslib/CodeGen/CodeGenFunction.h
- lib/Sema/SemaChecking.cpp 45 additions, 1 deletionlib/Sema/SemaChecking.cpp
- lib/Sema/SemaDeclAttr.cpp 1 addition, 1 deletionlib/Sema/SemaDeclAttr.cpp
- test/CodeGen/builtin-assume-aligned.c 44 additions, 0 deletionstest/CodeGen/builtin-assume-aligned.c
- test/CodeGen/builtin-assume.c 20 additions, 2 deletionstest/CodeGen/builtin-assume.c
- test/Sema/builtin-assume-aligned.c 43 additions, 0 deletionstest/Sema/builtin-assume-aligned.c
- test/Sema/builtin-assume.c 8 additions, 1 deletiontest/Sema/builtin-assume.c
- test/SemaCXX/builtin-assume-aligned-tmpl.cpp 22 additions, 0 deletionstest/SemaCXX/builtin-assume-aligned-tmpl.cpp
Loading
Please register or sign in to comment