From: Renato Golin Date: Wed, 21 May 2014 10:40:27 +0000 (+0000) Subject: Make global named registers internal variables X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4b98993f7f080d81275b691270548ac235d364af;p=clang Make global named registers internal variables git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209289 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index fe735dc92f..99547f8175 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -7874,6 +7874,9 @@ bool ASTContext::DeclMustBeEmitted(const Decl *D) { if (const VarDecl *VD = dyn_cast(D)) { if (!VD->isFileVarDecl()) return false; + // Global named register variables (GNU extension) are never emitted. + if (VD->getStorageClass() == SC_Register) + return false; } else if (const FunctionDecl *FD = dyn_cast(D)) { // We never need to emit an uninstantiated function template. if (FD->getTemplatedKind() == FunctionDecl::TK_FunctionTemplate) diff --git a/test/CodeGen/named_reg_global.c b/test/CodeGen/named_reg_global.c index a1ee40c6f7..20f8b328c2 100644 --- a/test/CodeGen/named_reg_global.c +++ b/test/CodeGen/named_reg_global.c @@ -3,6 +3,7 @@ // RUN: %clang_cc1 -triple arm64-linux-gnu -S -emit-llvm %s -o - | FileCheck %s // RUN: %clang_cc1 -triple armv7-linux-gnu -S -emit-llvm %s -o - | FileCheck %s +// CHECK-NOT: @sp = common global register unsigned long current_stack_pointer asm("sp"); // CHECK: define{{.*}} i[[bits:[0-9]+]] @get_stack_pointer_addr()