This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This mapping is only used to determine which projects need to be rebuild. | |
// E.g. all builds are still in-tree, so 'llvm' will always be included in the | |
// built projects. | |
{ | |
"llvm": [], | |
"clang": ["llvm"], | |
"clang-tools-extra": ["clang", "llvm"], | |
// FIXME: "compiler-rt" depends on "llvm" only for configuration, right? | |
// it means we can miss breakages in configuration changes. | |
// Same for libcxx, libc and other projects that don't have 'llvm' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# First, build the index builder. | |
ninja global-symbol-builder | |
# $LLVM_PATH is source directory of LLVM. | |
# compile_commands.json (or a symlink to it) should be there. | |
# Running this takes considerable time (> 30 mins). | |
./bin/global-symbol-builder -executor=all-TUs $LLVM_PATH > $HOME/llvm_clangd.symbols | |
# Run clangd with the following arg to make it pick up the built index: | |
# -yaml-symbol-file=$HOME/llvm_clangd.symbols |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
template <class T> | |
int foo(T*); | |
template<> | |
int foo(int); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
template <class T> | |
class has_member_type { | |
struct One { char a[1]; }; | |
struct Two { char a[2]; }; | |
template <class U> | |
static One foo(typename U::type*); | |
template <class U> | |
static Two foo(...); |