[clang] cfc0027 - [AVR] Support aliases in non-zero address space

Ayke van Laethem via cfe-commits cfe-commits at lists.llvm.org
Mon Apr 13 15:43:42 PDT 2020


Author: Ayke van Laethem
Date: 2020-04-14T00:42:19+02:00
New Revision: cfc002714a208bdbc51fade56141a38fbba26e24

URL: https://github.com/llvm/llvm-project/commit/cfc002714a208bdbc51fade56141a38fbba26e24
DIFF: https://github.com/llvm/llvm-project/commit/cfc002714a208bdbc51fade56141a38fbba26e24.diff

LOG: [AVR] Support aliases in non-zero address space

This fixes code like the following on AVR:

void foo(void) {
}
void bar(void) __attribute__((alias("foo")));

Code like this is present in compiler-rt, which I'm trying to build.

Differential Revision: https://reviews.llvm.org/D76182

Added: 
    clang/test/CodeGen/alias-avr.c

Modified: 
    clang/lib/CodeGen/CodeGenModule.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 8b7d52b88146..0f56dcb3e26c 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -4536,8 +4536,9 @@ void CodeGenModule::EmitAliasDefinition(GlobalDecl GD) {
   }
 
   // Create the new alias itself, but don't set a name yet.
+  unsigned AS = Aliasee->getType()->getPointerAddressSpace();
   auto *GA =
-      llvm::GlobalAlias::create(DeclTy, 0, LT, "", Aliasee, &getModule());
+      llvm::GlobalAlias::create(DeclTy, AS, LT, "", Aliasee, &getModule());
 
   if (Entry) {
     if (GA->getAliasee() == Entry) {

diff  --git a/clang/test/CodeGen/alias-avr.c b/clang/test/CodeGen/alias-avr.c
new file mode 100644
index 000000000000..dfec154beb34
--- /dev/null
+++ b/clang/test/CodeGen/alias-avr.c
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -triple avr-unknown-unknown -emit-llvm -o - %s | FileCheck %s
+
+int mul(int a, int b) {
+	return a * b;
+}
+
+// CHECK: @multiply = alias i16 (i16, i16), i16 (i16, i16) addrspace(1)* @mul
+int multiply(int x, int y) __attribute__((alias("mul")));


        


More information about the cfe-commits mailing list