diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-12-07 15:23:23 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-12-07 15:23:23 +0000 |
commit | 0017c5fa92ad3b10e15fd34f3865e8e5b850a5ed (patch) | |
tree | 7dcbd7e4e3e1393b020faa79b306a7453c702257 | |
parent | d2f4b09e100edf5359606015be289768c94df804 (diff) | |
download | bcm5719-llvm-0017c5fa92ad3b10e15fd34f3865e8e5b850a5ed.tar.gz bcm5719-llvm-0017c5fa92ad3b10e15fd34f3865e8e5b850a5ed.zip |
Fix PR8720 by printing an error message with a substring that the gcc testsuite searches for.
llvm-svn: 121137
-rw-r--r-- | clang/include/clang/Basic/DiagnosticSemaKinds.td | 2 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDeclAttr.cpp | 5 | ||||
-rw-r--r-- | clang/test/CodeGen/2008-07-29-override-alias-decl.c | 2 | ||||
-rw-r--r-- | clang/test/CodeGen/pragma-weak.c | 2 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/attr.cpp | 2 | ||||
-rw-r--r-- | clang/test/Sema/attr-alias.c | 8 | ||||
-rw-r--r-- | clang/test/SemaCXX/attr-weakref.cpp | 2 |
7 files changed, 19 insertions, 4 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index d3c1a50a668..34354ce4fd0 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -1001,6 +1001,8 @@ def err_attribute_weakref_not_global_context : Error< "weakref declaration of '%0' must be in a global context">; def err_attribute_weakref_without_alias : Error< "weakref declaration of '%0' must also have an alias attribute">; +def err_alias_not_supported_on_darwin : Error < + "only weak aliases are supported on darwin">; def warn_attribute_wrong_decl_type : Warning< "%0 attribute only applies to %select{function|union|" "variable and function|function or method|parameter|" diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 3c4bd8ffc45..e5f27fcfbb8 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -675,6 +675,11 @@ static void HandleAliasAttr(Decl *d, const AttributeList &Attr, Sema &S) { return; } + if (S.Context.Target.getTriple().getOS() == llvm::Triple::Darwin) { + S.Diag(Attr.getLoc(), diag::err_alias_not_supported_on_darwin); + return; + } + // FIXME: check if target symbol exists in current file d->addAttr(::new (S.Context) AliasAttr(Attr.getLoc(), S.Context, diff --git a/clang/test/CodeGen/2008-07-29-override-alias-decl.c b/clang/test/CodeGen/2008-07-29-override-alias-decl.c index dbe10b395f4..0c2d0c6ca57 100644 --- a/clang/test/CodeGen/2008-07-29-override-alias-decl.c +++ b/clang/test/CodeGen/2008-07-29-override-alias-decl.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s int x() { return 1; } diff --git a/clang/test/CodeGen/pragma-weak.c b/clang/test/CodeGen/pragma-weak.c index 5c2866e3d35..1de60e106a9 100644 --- a/clang/test/CodeGen/pragma-weak.c +++ b/clang/test/CodeGen/pragma-weak.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -emit-llvm %s -o - -verify | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm %s -o - -verify | FileCheck %s // CHECK: @weakvar = weak global // CHECK: @__weakvar_alias = common global diff --git a/clang/test/CodeGenCXX/attr.cpp b/clang/test/CodeGenCXX/attr.cpp index d689a4fdf49..9e8740e5470 100644 --- a/clang/test/CodeGenCXX/attr.cpp +++ b/clang/test/CodeGenCXX/attr.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s // CHECK: @test2 = alias i32 ()* @_Z5test1v diff --git a/clang/test/Sema/attr-alias.c b/clang/test/Sema/attr-alias.c new file mode 100644 index 00000000000..151052f89e5 --- /dev/null +++ b/clang/test/Sema/attr-alias.c @@ -0,0 +1,8 @@ +// RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -verify %s + +void g() {} + +// It is important that the following string be in the error message. The gcc +// testsuite looks for it to decide if a target supports aliases. + +void f() __attribute__((alias("g"))); //expected-error {{only weak aliases are supported}} diff --git a/clang/test/SemaCXX/attr-weakref.cpp b/clang/test/SemaCXX/attr-weakref.cpp index 5773acc1ab3..11368d9399e 100644 --- a/clang/test/SemaCXX/attr-weakref.cpp +++ b/clang/test/SemaCXX/attr-weakref.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -verify %s // GCC will accept anything as the argument of weakref. Should we // check for an existing decl? |