Allow aliases to be unnamed_addr.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 6 Jun 2014 01:20:28 +0000 (01:20 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 6 Jun 2014 01:20:28 +0000 (01:20 +0000)
commit6fd1b8ee48de8deeabc89f70c37b88957b562ba0
tree538d7a72d829478809c119d62de83e8ed7993f6e
parentbbd34136f344e88ec8a0b148da908c01a1c3d910
Allow aliases to be unnamed_addr.

Alias with unnamed_addr were in a strange state. It is stored in GlobalValue,
the language reference talks about "unnamed_addr aliases" but the verifier
was rejecting them.

It seems natural to allow unnamed_addr in aliases:

* It is a property of how it is accessed, not of the data itself.
* It is perfectly possible to write code that depends on the address
of an alias.

This patch then makes unname_addr legal for aliases. One side effect is that
the syntax changes for a corner case: In globals, unnamed_addr is now printed
before the address space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210302 91177308-0d34-0410-b5e6-96231b3b80d8
20 files changed:
docs/LangRef.rst
lib/AsmParser/LLParser.cpp
lib/AsmParser/LLParser.h
lib/Bitcode/Reader/BitcodeReader.cpp
lib/Bitcode/Writer/BitcodeWriter.cpp
lib/IR/AsmWriter.cpp
lib/IR/Verifier.cpp
lib/Linker/LinkModules.cpp
test/CodeGen/NVPTX/nvvm-reflect.ll
test/CodeGen/R600/gv-const-addrspace.ll
test/CodeGen/R600/lds-output-queue.ll
test/CodeGen/R600/lds-size.ll
test/CodeGen/R600/local-memory-two-objects.ll
test/CodeGen/R600/local-memory.ll
test/Feature/aliases.ll
test/Instrumentation/BoundsChecking/phi.ll
test/Linker/unnamed-addr1-a.ll
test/Linker/unnamed-addr1-b.ll
test/Transforms/InstCombine/2012-07-30-addrsp-bitcast.ll
unittests/IR/VerifierTest.cpp