aykevl updated this revision to Diff 477827. aykevl added a comment. - add `CHECK:` line that I forgot
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138681/new/ https://reviews.llvm.org/D138681 Files: clang/lib/CodeGen/CodeGenModule.cpp clang/test/CodeGen/avr/alias-avr.c Index: clang/test/CodeGen/avr/alias-avr.c =================================================================== --- clang/test/CodeGen/avr/alias-avr.c +++ clang/test/CodeGen/avr/alias-avr.c @@ -6,3 +6,7 @@ // CHECK: @multiply ={{.*}} alias i16 (i16, i16), ptr addrspace(1) @mul int multiply(int x, int y) __attribute__((alias("mul"))); + +// Make sure the correct address space is used when creating an alias that needs +// a pointer cast. +char smallmul(int a, int b) __attribute__((alias("mul"))); Index: clang/lib/CodeGen/CodeGenModule.cpp =================================================================== --- clang/lib/CodeGen/CodeGenModule.cpp +++ clang/lib/CodeGen/CodeGenModule.cpp @@ -4002,7 +4002,8 @@ // (If function is requested for a definition, we always need to create a new // function, not just return a bitcast.) if (!IsForDefinition) - return llvm::ConstantExpr::getBitCast(Entry, Ty->getPointerTo()); + return llvm::ConstantExpr::getBitCast( + Entry, Ty->getPointerTo(Entry->getAddressSpace())); } // This function doesn't have a complete type (for example, the return
Index: clang/test/CodeGen/avr/alias-avr.c =================================================================== --- clang/test/CodeGen/avr/alias-avr.c +++ clang/test/CodeGen/avr/alias-avr.c @@ -6,3 +6,7 @@ // CHECK: @multiply ={{.*}} alias i16 (i16, i16), ptr addrspace(1) @mul int multiply(int x, int y) __attribute__((alias("mul"))); + +// Make sure the correct address space is used when creating an alias that needs +// a pointer cast. +char smallmul(int a, int b) __attribute__((alias("mul"))); Index: clang/lib/CodeGen/CodeGenModule.cpp =================================================================== --- clang/lib/CodeGen/CodeGenModule.cpp +++ clang/lib/CodeGen/CodeGenModule.cpp @@ -4002,7 +4002,8 @@ // (If function is requested for a definition, we always need to create a new // function, not just return a bitcast.) if (!IsForDefinition) - return llvm::ConstantExpr::getBitCast(Entry, Ty->getPointerTo()); + return llvm::ConstantExpr::getBitCast( + Entry, Ty->getPointerTo(Entry->getAddressSpace())); } // This function doesn't have a complete type (for example, the return
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits