From: Peter Collingbourne Date: Mon, 15 Jun 2015 22:16:51 +0000 (+0000) Subject: Add safestack attribute to LLVMAttribute enum and Go bindings. Correct X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=9784231221a895e7c2ef7c79b3a1ef597bc10390 Add safestack attribute to LLVMAttribute enum and Go bindings. Correct constants in commented-out part of LLVMAttribute enum. Add tests that verify that the safestack attribute is only allowed as a function attribute. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239772 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/bindings/go/llvm/ir.go b/bindings/go/llvm/ir.go index e5916a1bacf..1f00cd58473 100644 --- a/bindings/go/llvm/ir.go +++ b/bindings/go/llvm/ir.go @@ -160,6 +160,8 @@ const ( InAllocaAttribute Attribute = 1 << 43 NonNullAttribute Attribute = 1 << 44 JumpTableAttribute Attribute = 1 << 45 + ConvergentAttribute Attribute = 1 << 46 + SafeStackAttribute Attribute = 1 << 47 ) //------------------------------------------------------------------------- diff --git a/bindings/go/llvm/ir_test.go b/bindings/go/llvm/ir_test.go index 981c94aa63e..edeeab935db 100644 --- a/bindings/go/llvm/ir_test.go +++ b/bindings/go/llvm/ir_test.go @@ -53,6 +53,7 @@ func TestAttributes(t *testing.T) { {AlwaysInlineAttribute, "alwaysinline"}, {BuiltinAttribute, "builtin"}, {ByValAttribute, "byval"}, + {ConvergentAttribute, "convergent"}, {InAllocaAttribute, "inalloca"}, {InlineHintAttribute, "inlinehint"}, {InRegAttribute, "inreg"}, @@ -78,6 +79,7 @@ func TestAttributes(t *testing.T) { {ReturnedAttribute, "returned"}, {ReturnsTwiceAttribute, "returns_twice"}, {SExtAttribute, "signext"}, + {SafeStackAttribute, "safestack"}, {StackProtectAttribute, "ssp"}, {StackProtectReqAttribute, "sspreq"}, {StackProtectStrongAttribute, "sspstrong"}, diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index 73bff0b7ec4..874d46386bf 100644 --- a/include/llvm-c/Core.h +++ b/include/llvm-c/Core.h @@ -161,15 +161,15 @@ typedef enum { /* FIXME: These attributes are currently not included in the C API as a temporary measure until the API/ABI impact to the C API is understood and the path forward agreed upon. - LLVMAddressSafety = 1ULL << 32, - LLVMStackProtectStrongAttribute = 1ULL<<33, - LLVMCold = 1ULL << 34, - LLVMOptimizeNone = 1ULL << 35, - LLVMInAllocaAttribute = 1ULL << 36, - LLVMNonNullAttribute = 1ULL << 37, - LLVMJumpTableAttribute = 1ULL << 38, - LLVMDereferenceableAttribute = 1ULL << 39, - LLVMDereferenceableOrNullAttribute = 1ULL << 40, + LLVMSanitizeAddressAttribute = 1ULL << 32, + LLVMStackProtectStrongAttribute = 1ULL<<35, + LLVMColdAttribute = 1ULL << 40, + LLVMOptimizeNoneAttribute = 1ULL << 42, + LLVMInAllocaAttribute = 1ULL << 43, + LLVMNonNullAttribute = 1ULL << 44, + LLVMJumpTableAttribute = 1ULL << 45, + LLVMConvergentAttribute = 1ULL << 46, + LLVMSafeStackAttribute = 1ULL << 47, */ } LLVMAttribute; diff --git a/test/Assembler/invalid-safestack-param.ll b/test/Assembler/invalid-safestack-param.ll new file mode 100644 index 00000000000..b9046c4c33b --- /dev/null +++ b/test/Assembler/invalid-safestack-param.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as -o /dev/null %s 2>&1 | FileCheck %s + +; CHECK: error: invalid use of function-only attribute +declare void @foo(i32 safestack %x) diff --git a/test/Assembler/invalid-safestack-return.ll b/test/Assembler/invalid-safestack-return.ll new file mode 100644 index 00000000000..605e72e84c8 --- /dev/null +++ b/test/Assembler/invalid-safestack-return.ll @@ -0,0 +1,4 @@ +; RUN: not llvm-as -o /dev/null %s 2>&1 | FileCheck %s + +; CHECK: error: invalid use of function-only attribute +declare safestack void @foo()