aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-10-25 23:51:23 +0000
committerDan Gohman <gohman@apple.com>2010-10-25 23:51:23 +0000
commit455553b7e5d5233acf48967874c43b4a5d7e24d1 (patch)
treee86b3675ab27b254791f16746a9d857e7fb576f5 /lib/CodeGen
parente946fc833d8592aa2890bfd9839f1ad839b3d284 (diff)
Add infrastructure for emitting TBAA metadata with the "constant" flag.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117328 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r--lib/CodeGen/CodeGenTBAA.cpp17
-rw-r--r--lib/CodeGen/CodeGenTBAA.h3
2 files changed, 16 insertions, 4 deletions
diff --git a/lib/CodeGen/CodeGenTBAA.cpp b/lib/CodeGen/CodeGenTBAA.cpp
index d8618f0d3a..d4d71a7557 100644
--- a/lib/CodeGen/CodeGenTBAA.cpp
+++ b/lib/CodeGen/CodeGenTBAA.cpp
@@ -20,6 +20,8 @@
#include "clang/AST/ASTContext.h"
#include "llvm/LLVMContext.h"
#include "llvm/Metadata.h"
+#include "llvm/Constants.h"
+#include "llvm/Type.h"
using namespace clang;
using namespace CodeGen;
@@ -57,13 +59,22 @@ llvm::MDNode *CodeGenTBAA::getChar() {
/// getTBAAInfoForNamedType - Create a TBAA tree node with the given string
/// as its identifier, and the given Parent node as its tree parent.
llvm::MDNode *CodeGenTBAA::getTBAAInfoForNamedType(llvm::StringRef NameStr,
- llvm::MDNode *Parent) {
+ llvm::MDNode *Parent,
+ bool Readonly) {
+ // Currently there is only one flag defined - the readonly flag.
+ llvm::Value *Flags = 0;
+ if (Readonly)
+ Flags = llvm::ConstantInt::get(llvm::Type::getInt64Ty(VMContext), true);
+
+ // Set up the mdnode operand list.
llvm::Value *Ops[] = {
llvm::MDString::get(VMContext, NameStr),
- Parent
+ Parent,
+ Flags
};
- return llvm::MDNode::get(VMContext, Ops, llvm::array_lengthof(Ops));
+ // Create the mdnode.
+ return llvm::MDNode::get(VMContext, Ops, llvm::array_lengthof(Ops) - !Flags);
}
llvm::MDNode *
diff --git a/lib/CodeGen/CodeGenTBAA.h b/lib/CodeGen/CodeGenTBAA.h
index 5a56079fc9..29f7f544d3 100644
--- a/lib/CodeGen/CodeGenTBAA.h
+++ b/lib/CodeGen/CodeGenTBAA.h
@@ -56,7 +56,8 @@ class CodeGenTBAA {
llvm::MDNode *getChar();
llvm::MDNode *getTBAAInfoForNamedType(llvm::StringRef NameStr,
- llvm::MDNode *Parent);
+ llvm::MDNode *Parent,
+ bool Readonly = false);
public:
CodeGenTBAA(ASTContext &Ctx, llvm::LLVMContext &VMContext,