add __builtin_unpredictable and convert to metadata
This patch depends on r246688 (D12341). The goal is to make LLVM generate different code for these functions for a target that has cheap branches (see PR23827 for more details): int foo(); int normal(int x, int y, int z) { if (x != 0 && y != 0) return foo(); return 1; } int crazy(int x, int y) { if (__builtin_unpredictable(x != 0 && y != 0)) return foo(); return 1; } Differential Revision: http://reviews.llvm.org/D12458 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246699 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- docs/LanguageExtensions.rst 27 additions, 0 deletionsdocs/LanguageExtensions.rst
- include/clang/Basic/Builtins.def 1 addition, 0 deletionsinclude/clang/Basic/Builtins.def
- lib/CodeGen/CGBuiltin.cpp 6 additions, 0 deletionslib/CodeGen/CGBuiltin.cpp
- lib/CodeGen/CodeGenFunction.cpp 18 additions, 1 deletionlib/CodeGen/CodeGenFunction.cpp
- lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp 3 additions, 2 deletionslib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp
- test/CodeGen/builtin-unpredictable.c 38 additions, 0 deletionstest/CodeGen/builtin-unpredictable.c
Loading
Please register or sign in to comment