diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-07-20 22:51:52 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-07-20 22:51:52 +0000 |
commit | 1bf0f8ede6f8f2b01ae1bccb1cd7519b19465119 (patch) | |
tree | 929b8c0863e1444e32ef18f1e91fc92626fa707f /clang/lib/CodeGen | |
parent | e4d22d59d1db39262790b6afd3521a65be2d7288 (diff) | |
download | bcm5719-llvm-1bf0f8ede6f8f2b01ae1bccb1cd7519b19465119.tar.gz bcm5719-llvm-1bf0f8ede6f8f2b01ae1bccb1cd7519b19465119.zip |
[MS Compat] Add support for __declspec(noalias)
The attribute '__declspec(noalias)' communicates that the function only
accesses memory pointed to by its pointer-typed arguments.
llvm-svn: 242728
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r-- | clang/lib/CodeGen/CGCall.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index 2dc94d06f32..a61f13fb9ab 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -1421,13 +1421,16 @@ void CodeGenModule::ConstructAttributeList(const CGFunctionInfo &FI, FuncAttrs.addAttribute(llvm::Attribute::NoReturn); } - // 'const' and 'pure' attribute functions are also nounwind. + // 'const', 'pure' and 'noalias' attributed functions are also nounwind. if (TargetDecl->hasAttr<ConstAttr>()) { FuncAttrs.addAttribute(llvm::Attribute::ReadNone); FuncAttrs.addAttribute(llvm::Attribute::NoUnwind); } else if (TargetDecl->hasAttr<PureAttr>()) { FuncAttrs.addAttribute(llvm::Attribute::ReadOnly); FuncAttrs.addAttribute(llvm::Attribute::NoUnwind); + } else if (TargetDecl->hasAttr<NoAliasAttr>()) { + FuncAttrs.addAttribute(llvm::Attribute::ArgMemOnly); + FuncAttrs.addAttribute(llvm::Attribute::NoUnwind); } if (TargetDecl->hasAttr<RestrictAttr>()) RetAttrs.addAttribute(llvm::Attribute::NoAlias); |