aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2010-12-17 21:21:31 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2010-12-17 21:21:31 +0000
commit965841cfe4de695fc56cab4821fd7e032ff85b83 (patch)
tree33539f2d29383519a02f7c85eac1b442dd51c871
parent3ce88c92905c173e39e9ae29c53d0755504a76f6 (diff)
downloadexternal_llvm-965841cfe4de695fc56cab4821fd7e032ff85b83.zip
external_llvm-965841cfe4de695fc56cab4821fd7e032ff85b83.tar.gz
external_llvm-965841cfe4de695fc56cab4821fd7e032ff85b83.tar.bz2
Support/Path: Deprecate PathV1::isAbsolute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122086 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/ADT/SmallString.h3
-rw-r--r--include/llvm/Support/Compiler.h19
-rw-r--r--include/llvm/Support/PathV1.h8
-rw-r--r--lib/CompilerDriver/Action.cpp2
4 files changed, 29 insertions, 3 deletions
diff --git a/include/llvm/ADT/SmallString.h b/include/llvm/ADT/SmallString.h
index 4388a85..da26416 100644
--- a/include/llvm/ADT/SmallString.h
+++ b/include/llvm/ADT/SmallString.h
@@ -27,6 +27,9 @@ public:
// Default ctor - Initialize to empty.
SmallString() {}
+ // Initialize from a StringRef.
+ SmallString(StringRef S) : SmallVector<char, InternalLen>(S.begin(), S.end()) {}
+
// Initialize with a range.
template<typename ItTy>
SmallString(ItTy S, ItTy E) : SmallVector<char, InternalLen>(S, E) {}
diff --git a/include/llvm/Support/Compiler.h b/include/llvm/Support/Compiler.h
index 6ac7f9c..67f0fd7 100644
--- a/include/llvm/Support/Compiler.h
+++ b/include/llvm/Support/Compiler.h
@@ -15,6 +15,10 @@
#ifndef LLVM_SUPPORT_COMPILER_H
#define LLVM_SUPPORT_COMPILER_H
+#ifndef __has_feature
+# define __has_feature(x) 0
+#endif
+
/// LLVM_LIBRARY_VISIBILITY - If a class marked with this attribute is linked
/// into a shared library, then the class should be private to the library and
/// not accessible from outside it. Can also be used to mark variables and
@@ -107,4 +111,19 @@
#define LLVM_ATTRIBUTE_NORETURN
#endif
+// LLVM_ATTRIBUTE_DEPRECATED(decl, "message")
+#if __has_feature(attribute_deprecated_with_message)
+# define LLVM_ATTRIBUTE_DEPRECATED(decl, message) \
+ decl __attribute__((deprecated(message)))
+#elif defined(__GNUC__)
+# define LLVM_ATTRIBUTE_DEPRECATED(decl, message) \
+ decl __attribute__((deprecated))
+#elif defined(_MSC_VER)
+# define LLVM_ATTRIBUTE_DEPRECATED(decl, message) \
+ __declspec(deprecated(message)) decl
+#else
+# define LLVM_ATTRIBUTE_DEPRECATED(decl, message) \
+ decl
+#endif
+
#endif
diff --git a/include/llvm/Support/PathV1.h b/include/llvm/Support/PathV1.h
index 74215cb..5c0bdec 100644
--- a/include/llvm/Support/PathV1.h
+++ b/include/llvm/Support/PathV1.h
@@ -15,11 +15,15 @@
#define LLVM_SYSTEM_PATH_H
#include "llvm/ADT/StringRef.h"
+#include "llvm/Support/Compiler.h"
#include "llvm/Support/TimeValue.h"
#include <set>
#include <string>
#include <vector>
+#define LLVMV_PATH_DEPRECATED_MSG \
+ "PathV1 is being deprecated, please use the PathV2 API."
+
namespace llvm {
namespace sys {
@@ -300,12 +304,12 @@ namespace sys {
/// This function determines if the path name is absolute, as opposed to
/// relative.
/// @brief Determine if the path is absolute.
- bool isAbsolute() const;
+ LLVM_ATTRIBUTE_DEPRECATED(bool isAbsolute() const, LLVMV_PATH_DEPRECATED_MSG);
/// This function determines if the path name is absolute, as opposed to
/// relative.
/// @brief Determine if the path is absolute.
- static bool isAbsolute(const char *NameStart, unsigned NameLen);
+ LLVM_ATTRIBUTE_DEPRECATED(static bool isAbsolute(const char *NameStart, unsigned NameLen), LLVMV_PATH_DEPRECATED_MSG);
/// This function opens the file associated with the path name provided by
/// the Path object and reads its magic number. If the magic number at the
diff --git a/lib/CompilerDriver/Action.cpp b/lib/CompilerDriver/Action.cpp
index dcb0c57..a8d625c 100644
--- a/lib/CompilerDriver/Action.cpp
+++ b/lib/CompilerDriver/Action.cpp
@@ -56,7 +56,7 @@ namespace {
int ExecuteProgram (const std::string& name, const StrVector& args) {
sys::Path prog(name);
- if (!prog.isAbsolute()) {
+ if (sys::path::is_relative(prog.str())) {
prog = PrependMainExecutablePath(name, ProgramName,
(void *)(intptr_t)&Main);