Add safestack attribute to LLVMAttribute enum and Go bindings. Correct
authorPeter Collingbourne <peter@pcc.me.uk>
Mon, 15 Jun 2015 22:16:51 +0000 (22:16 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Mon, 15 Jun 2015 22:16:51 +0000 (22:16 +0000)
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

bindings/go/llvm/ir.go
bindings/go/llvm/ir_test.go
include/llvm-c/Core.h
test/Assembler/invalid-safestack-param.ll [new file with mode: 0644]
test/Assembler/invalid-safestack-return.ll [new file with mode: 0644]

index e5916a1bacf91150abaf8759c017dc0132ba9b75..1f00cd584730791cfcf69e11b7a98ab3416c70e7 100644 (file)
@@ -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
 )
 
 //-------------------------------------------------------------------------
index 981c94aa63ecd6be7cf08f378db9a093b150555a..edeeab935db70875f84c73c39ed8a8a90693585b 100644 (file)
@@ -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"},
index 73bff0b7ec4903b88c902986b0d33b47d2cde99c..874d46386bfd9e7298254b94517a3871253747f0 100644 (file)
@@ -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 (file)
index 0000000..b9046c4
--- /dev/null
@@ -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 (file)
index 0000000..605e72e
--- /dev/null
@@ -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()