@@ -91,34 +91,35 @@ pub enum DiagnosticSeverity {
91
91
Note ,
92
92
}
93
93
94
- #[ deriving( Clone ) ]
95
- pub enum Attribute {
96
- ZExtAttribute = 1 << 0 ,
97
- SExtAttribute = 1 << 1 ,
98
- NoReturnAttribute = 1 << 2 ,
99
- InRegAttribute = 1 << 3 ,
100
- StructRetAttribute = 1 << 4 ,
101
- NoUnwindAttribute = 1 << 5 ,
102
- NoAliasAttribute = 1 << 6 ,
103
- ByValAttribute = 1 << 7 ,
104
- NestAttribute = 1 << 8 ,
105
- ReadNoneAttribute = 1 << 9 ,
106
- ReadOnlyAttribute = 1 << 10 ,
107
- NoInlineAttribute = 1 << 11 ,
108
- AlwaysInlineAttribute = 1 << 12 ,
109
- OptimizeForSizeAttribute = 1 << 13 ,
110
- StackProtectAttribute = 1 << 14 ,
111
- StackProtectReqAttribute = 1 << 15 ,
112
- AlignmentAttribute = 31 << 16 ,
113
- NoCaptureAttribute = 1 << 21 ,
114
- NoRedZoneAttribute = 1 << 22 ,
115
- NoImplicitFloatAttribute = 1 << 23 ,
116
- NakedAttribute = 1 << 24 ,
117
- InlineHintAttribute = 1 << 25 ,
118
- StackAttribute = 7 << 26 ,
119
- ReturnsTwiceAttribute = 1 << 29 ,
120
- UWTableAttribute = 1 << 30 ,
121
- NonLazyBindAttribute = 1 << 31 ,
94
+ bitflags ! {
95
+ flags Attribute : u32 {
96
+ static ZExtAttribute = 1 << 0 ,
97
+ static SExtAttribute = 1 << 1 ,
98
+ static NoReturnAttribute = 1 << 2 ,
99
+ static InRegAttribute = 1 << 3 ,
100
+ static StructRetAttribute = 1 << 4 ,
101
+ static NoUnwindAttribute = 1 << 5 ,
102
+ static NoAliasAttribute = 1 << 6 ,
103
+ static ByValAttribute = 1 << 7 ,
104
+ static NestAttribute = 1 << 8 ,
105
+ static ReadNoneAttribute = 1 << 9 ,
106
+ static ReadOnlyAttribute = 1 << 10 ,
107
+ static NoInlineAttribute = 1 << 11 ,
108
+ static AlwaysInlineAttribute = 1 << 12 ,
109
+ static OptimizeForSizeAttribute = 1 << 13 ,
110
+ static StackProtectAttribute = 1 << 14 ,
111
+ static StackProtectReqAttribute = 1 << 15 ,
112
+ static AlignmentAttribute = 31 << 16 ,
113
+ static NoCaptureAttribute = 1 << 21 ,
114
+ static NoRedZoneAttribute = 1 << 22 ,
115
+ static NoImplicitFloatAttribute = 1 << 23 ,
116
+ static NakedAttribute = 1 << 24 ,
117
+ static InlineHintAttribute = 1 << 25 ,
118
+ static StackAttribute = 7 << 26 ,
119
+ static ReturnsTwiceAttribute = 1 << 29 ,
120
+ static UWTableAttribute = 1 << 30 ,
121
+ static NonLazyBindAttribute = 1 << 31 ,
122
+ }
122
123
}
123
124
124
125
#[ repr( u64 ) ]
@@ -160,13 +161,13 @@ trait AttrHelper {
160
161
impl AttrHelper for Attribute {
161
162
fn apply_llfn ( & self , idx : c_uint , llfn : ValueRef ) {
162
163
unsafe {
163
- LLVMAddFunctionAttribute ( llfn, idx, * self as uint64_t ) ;
164
+ LLVMAddFunctionAttribute ( llfn, idx, self . bits ( ) as uint64_t ) ;
164
165
}
165
166
}
166
167
167
168
fn apply_callsite ( & self , idx : c_uint , callsite : ValueRef ) {
168
169
unsafe {
169
- LLVMAddCallSiteAttribute ( callsite, idx, * self as uint64_t ) ;
170
+ LLVMAddCallSiteAttribute ( callsite, idx, self . bits ( ) as uint64_t ) ;
170
171
}
171
172
}
172
173
}
@@ -2009,7 +2010,7 @@ pub fn ConstFCmp(pred: RealPredicate, v1: ValueRef, v2: ValueRef) -> ValueRef {
2009
2010
2010
2011
pub fn SetFunctionAttribute ( fn_ : ValueRef , attr : Attribute ) {
2011
2012
unsafe {
2012
- LLVMAddFunctionAttribute ( fn_, FunctionIndex as c_uint , attr as uint64_t )
2013
+ LLVMAddFunctionAttribute ( fn_, FunctionIndex as c_uint , attr. bits ( ) as uint64_t )
2013
2014
}
2014
2015
}
2015
2016
0 commit comments