]> granicus.if.org Git - clang/commit
Non-allocatable Global Named Register
authorRenato Golin <renato.golin@linaro.org>
Mon, 19 May 2014 18:15:42 +0000 (18:15 +0000)
committerRenato Golin <renato.golin@linaro.org>
Mon, 19 May 2014 18:15:42 +0000 (18:15 +0000)
commit5df23100803789e9cac8dcec85d23cace2dafe46
tree1d8538fe31dfab2f0204187619b8b53fa42462b5
parentc83d828a7978c267d9bd1331dd1bd41ee72feb55
Non-allocatable Global Named Register

This patch implements global named registers in Clang, lowering to the just
created intrinsics in LLVM (@llvm.read/write_register). A new type of LValue
had to be created (Register), which just adds support to carry the metadata
node containing the name of the register. Two new methods to emit loads and
stores interoperate with another to emit the named metadata node.

No guarantees are being made and only non-allocatable global variable named
registers are being supported. Local named register support is unchanged.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209149 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/Decl.h
lib/CodeGen/CGExpr.cpp
lib/CodeGen/CGValue.h
lib/CodeGen/CodeGenFunction.h
lib/Sema/SemaDecl.cpp
test/CodeGen/named_reg_global.c [new file with mode: 0644]
test/Sema/asm.c
test/Sema/decl-invalid.c