AsmParser: add a warning for compatibility parsing
authorSaleem Abdulrasool <compnerd@compnerd.org>
Sat, 5 Apr 2014 22:42:53 +0000 (22:42 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Sat, 5 Apr 2014 22:42:53 +0000 (22:42 +0000)
This adds a warning when linker_private or linker_private_weak is provided and
we handle it in a compatible manner.

Suggested by Chris Lattner!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205681 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AsmParser/LLLexer.cpp
lib/AsmParser/LLLexer.h
lib/AsmParser/LLParser.cpp
test/Bitcode/deprecated-linker_private-linker_private_weak.ll

index 4fec7e60fa6e4ea7f73b56f8e7bbec9f42188864..c717a53f3a96050d383a3cebc63b3653fd90e996 100644 (file)
@@ -34,6 +34,10 @@ bool LLLexer::Error(LocTy ErrorLoc, const Twine &Msg) const {
   return true;
 }
 
+void LLLexer::Warning(LocTy WarningLoc, const Twine &Msg) const {
+  SM.PrintMessage(WarningLoc, SourceMgr::DK_Warning, Msg);
+}
+
 //===----------------------------------------------------------------------===//
 // Helper functions.
 //===----------------------------------------------------------------------===//
index 85703c766b099ec55f3c44a44ba2d7b2bbb7c7f6..ad11d49b259408d02407392677845c99dd27b3fc 100644 (file)
@@ -63,6 +63,10 @@ namespace llvm {
 
     bool Error(LocTy L, const Twine &Msg) const;
     bool Error(const Twine &Msg) const { return Error(getLoc(), Msg); }
+
+    void Warning(LocTy WarningLoc, const Twine &Msg) const;
+    void Warning(const Twine &Msg) const { return Warning(getLoc(), Msg); }
+
     std::string getFilename() const;
 
   private:
index b53b4ce7c0e0b238f254add1f56538927f38aeb3..b5c7f16ea2b8d344f0d35c2572baca9ca9f051c9 100644 (file)
@@ -1312,6 +1312,8 @@ bool LLParser::ParseOptionalLinkage(unsigned &Res, bool &HasLinkage) {
 
   case lltok::kw_linker_private:
   case lltok::kw_linker_private_weak:
+    Lex.Warning("'" + Lex.getStrVal() + "' is deprecated, treating as"
+                " PrivateLinkage");
     Lex.Lex();
     // treat linker_private and linker_private_weak as PrivateLinkage
     Res = GlobalValue::PrivateLinkage;
index 538f6419a14d38193dad77627a58186c43a9191d..12a527c7738fbcd5a4038a18cb85db1e44c4d80b 100644 (file)
@@ -1,4 +1,5 @@
 ; RUN: llvm-as -o - %s | llvm-dis | FileCheck %s
+; RUN: llvm-as -o /dev/null %s 2>&1 | FileCheck %s -check-prefix CHECK-WARNINGS
 
 @.linker_private = linker_private unnamed_addr constant [15 x i8] c"linker_private\00", align 64
 @.linker_private_weak = linker_private_weak unnamed_addr constant [20 x i8] c"linker_private_weak\00", align 64
@@ -6,3 +7,11 @@
 ; CHECK: @.linker_private = private unnamed_addr constant [15 x i8] c"linker_private\00", align 64
 ; CHECK: @.linker_private_weak = private unnamed_addr constant [20 x i8] c"linker_private_weak\00", align 64
 
+; CHECK-WARNINGS: warning: '.linker_private' is deprecated, treating as PrivateLinkage
+; CHECK-WARNINGS: @.linker_private = linker_private unnamed_addr constant [15 x i8] c"linker_private\00", align 64
+; CHECK-WARNINGS:                    ^
+
+; CHECK-WARNINGS: warning: '.linker_private_weak' is deprecated, treating as PrivateLinkage
+; CHECK-WARNINGS: @.linker_private_weak = linker_private_weak unnamed_addr constant [20 x i8] c"linker_private_weak\00", align 64
+; CHECK-WARNINGS:                         ^
+