[llvm] r198349 - Allow addrspacecast in global aliases

Rafael EspĂ­ndola rafael.espindola at gmail.com
Tue Jan 14 16:15:00 PST 2014


Sorry I missed this before.

Why do you need this? Aliases are just another name for a given
position, so it seems strange to have the same position being in two
address spaces.

How do you see this interacting with the proposed solution for
http://llvm.org/bugs/show_bug.cgi?id=10367?

On 2 January 2014 12:55, Matt Arsenault <Matthew.Arsenault at amd.com> wrote:
> Author: arsenm
> Date: Thu Jan  2 14:55:01 2014
> New Revision: 198349
>
> URL: http://llvm.org/viewvc/llvm-project?rev=198349&view=rev
> Log:
> Allow addrspacecast in global aliases
>
> Added:
>     llvm/trunk/test/Assembler/addrspacecast-alias.ll
> Modified:
>     llvm/trunk/lib/IR/Globals.cpp
>     llvm/trunk/lib/IR/Verifier.cpp
>
> Modified: llvm/trunk/lib/IR/Globals.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Globals.cpp?rev=198349&r1=198348&r2=198349&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/Globals.cpp (original)
> +++ llvm/trunk/lib/IR/Globals.cpp Thu Jan  2 14:55:01 2014
> @@ -237,7 +237,8 @@ GlobalValue *GlobalAlias::getAliasedGlob
>      return GV;
>
>    ConstantExpr *CE = cast<ConstantExpr>(C);
> -  assert((CE->getOpcode() == Instruction::BitCast ||
> +  assert((CE->getOpcode() == Instruction::BitCast ||
> +          CE->getOpcode() == Instruction::AddrSpaceCast ||
>            CE->getOpcode() == Instruction::GetElementPtr) &&
>           "Unsupported aliasee");
>
>
> Modified: llvm/trunk/lib/IR/Verifier.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Verifier.cpp?rev=198349&r1=198348&r2=198349&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/Verifier.cpp (original)
> +++ llvm/trunk/lib/IR/Verifier.cpp Thu Jan  2 14:55:01 2014
> @@ -550,9 +550,11 @@ void Verifier::visitGlobalAlias(GlobalAl
>      ConstantExpr *CE = dyn_cast<ConstantExpr>(Aliasee);
>      Assert1(CE &&
>              (CE->getOpcode() == Instruction::BitCast ||
> +             CE->getOpcode() == Instruction::AddrSpaceCast ||
>               CE->getOpcode() == Instruction::GetElementPtr) &&
>              isa<GlobalValue>(CE->getOperand(0)),
> -            "Aliasee should be either GlobalValue or bitcast of GlobalValue",
> +            "Aliasee should be either GlobalValue, bitcast or "
> +             "addrspacecast of GlobalValue",
>              &GA);
>
>      if (CE->getOpcode() == Instruction::BitCast) {
>
> Added: llvm/trunk/test/Assembler/addrspacecast-alias.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/addrspacecast-alias.ll?rev=198349&view=auto
> ==============================================================================
> --- llvm/trunk/test/Assembler/addrspacecast-alias.ll (added)
> +++ llvm/trunk/test/Assembler/addrspacecast-alias.ll Thu Jan  2 14:55:01 2014
> @@ -0,0 +1,6 @@
> +; RUN: llvm-as -disable-output %s
> +
> +; Test that global aliases are allowed to be constant addrspacecast
> +
> + at i = internal addrspace(1) global i8 42
> + at ia = alias internal i8 addrspace(2)* addrspacecast (i8 addrspace(1)* @i to i8 addrspace(2)*)
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list