aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Bitcode
diff options
context:
space:
mode:
authorChristopher Lamb <christopher.lamb@gmail.com>2007-12-11 08:59:05 +0000
committerChristopher Lamb <christopher.lamb@gmail.com>2007-12-11 08:59:05 +0000
commit44d62f61323cef4a7f88fb4a6de233cdcafebe8a (patch)
tree6a39f01b605f8fe68fa2e0c69f4e4c903c558967 /include/llvm/Bitcode
parentb93bdf6e2e9f024f504f10c4f01cc54bf1a7ca80 (diff)
downloadexternal_llvm-44d62f61323cef4a7f88fb4a6de233cdcafebe8a.zip
external_llvm-44d62f61323cef4a7f88fb4a6de233cdcafebe8a.tar.gz
external_llvm-44d62f61323cef4a7f88fb4a6de233cdcafebe8a.tar.bz2
Implement address space attribute for LLVM pointer types. Address spaces are
regions of memory that have a target specific relationship, as described in the Embedded C Technical Report. This also implements the 2007-12-11-AddressSpaces test, which demonstrates how address space attributes can be used in LLVM IR. In addition, this patch changes the bitcode signature for stores (in a backwards compatible manner), such that the pointer type, rather than the pointee type, is encoded. This permits type information in the pointer (e.g. address space) to be preserved for stores. LangRef updates are forthcoming. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44858 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Bitcode')
-rw-r--r--include/llvm/Bitcode/LLVMBitCodes.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/include/llvm/Bitcode/LLVMBitCodes.h b/include/llvm/Bitcode/LLVMBitCodes.h
index 32311b2..8d95c87 100644
--- a/include/llvm/Bitcode/LLVMBitCodes.h
+++ b/include/llvm/Bitcode/LLVMBitCodes.h
@@ -46,7 +46,7 @@ namespace bitc {
MODULE_CODE_SECTIONNAME = 5, // SECTIONNAME: [strchr x N]
MODULE_CODE_DEPLIB = 6, // DEPLIB: [strchr x N]
- // GLOBALVAR: [type, isconst, initid,
+ // GLOBALVAR: [pointer type, isconst, initid,
// linkage, alignment, section, visibility, threadlocal]
MODULE_CODE_GLOBALVAR = 7,
@@ -194,9 +194,13 @@ namespace bitc {
FUNC_CODE_INST_FREE = 18, // FREE: [opty, op]
FUNC_CODE_INST_ALLOCA = 19, // ALLOCA: [instty, op, align]
FUNC_CODE_INST_LOAD = 20, // LOAD: [opty, op, align, vol]
- FUNC_CODE_INST_STORE = 21, // STORE: [ptrty,val,ptr, align, vol]
+ FUNC_CODE_INST_STORE = 21, // STORE: [valty,val,ptr, align, vol]
FUNC_CODE_INST_CALL = 22, // CALL: [attr, fnty, fnid, args...]
- FUNC_CODE_INST_VAARG = 23 // VAARG: [valistty, valist, instty]
+ FUNC_CODE_INST_VAARG = 23, // VAARG: [valistty, valist, instty]
+ // This store code encodes the pointer type, rather than the value type
+ // this is so information only available in the pointer type (e.g. address
+ // spaces) is retained.
+ FUNC_CODE_INST_STORE2 = 24 // STORE: [ptrty,ptr,val, align, vol]
};
} // End bitc namespace
} // End llvm namespace