Changes in directory llvm/include/llvm/Support:
Compiler.h added (r1.1) --- Log message: New place to put compiler-specific functionality. This replaces Visibility.h, and provides macros that can be used to make explicit instantiations of template specializations, which is a gcc-specific feature. --- Diffs of the changes: (+40 -0) Compiler.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 40 insertions(+) Index: llvm/include/llvm/Support/Compiler.h diff -c /dev/null llvm/include/llvm/Support/Compiler.h:1.1 *** /dev/null Sun Aug 27 07:42:56 2006 --- llvm/include/llvm/Support/Compiler.h Sun Aug 27 07:42:45 2006 *************** *** 0 **** --- 1,40 ---- + //===-- llvm/Support/Compiler.h - Compiler abstraction support --*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by Chris Lattner and is distributed under + // the University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===----------------------------------------------------------------------===// + // + // This file defines several macros, based on the current compiler. This allows + // use of compiler-specific features in a way that remains portable. + // + //===----------------------------------------------------------------------===// + + #ifndef LLVM_SUPPORT_COMPILER_H + #define LLVM_SUPPORT_COMPILER_H + + // The VISIBILITY_HIDDEN macro, used for marking classes with the GCC-specific + // visibility("hidden") attribute. + #if __GNUC__ >= 4 + #define VISIBILITY_HIDDEN __attribute__ ((visibility("hidden"))) + #else + #define VISIBILITY_HIDDEN + #endif + + + // C++ doesn't support 'extern template' of template specializations. GCC does, + // but requires __extension__ before it. In the header, use this: + // EXTERN_TEMPLATE_INSTANTIATION(class foo<bar>); + // in the .cpp file, use this: + // TEMPLATE_INSTANTIATION(class foo<bar>); + #ifdef __GNUC__ + #define EXTERN_TEMPLATE_INSTANTIATION(X) __extension__ extern template X + #define TEMPLATE_INSTANTIATION(X) template X + #else + #define EXTERN_TEMPLATE_INSTANTIATION(X) + #define TEMPLATE_INSTANTIATION(X) + #endif + + #endif _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits