@@ -16,22 +16,29 @@ pub use self::Diagnostic::*;
16
16
use libc:: { c_char, c_uint} ;
17
17
use std:: ptr;
18
18
19
- use { DebugLocRef , DiagnosticInfoRef , TwineRef , ValueRef } ;
19
+ use { DiagnosticInfoRef , TwineRef , ValueRef } ;
20
+ use ffi:: DebugLocRef ;
20
21
21
22
#[ derive( Copy , Clone ) ]
22
23
pub enum OptimizationDiagnosticKind {
23
24
OptimizationRemark ,
24
25
OptimizationMissed ,
25
26
OptimizationAnalysis ,
27
+ OptimizationAnalysisFPCommute ,
28
+ OptimizationAnalysisAliasing ,
26
29
OptimizationFailure ,
30
+ OptimizationRemarkOther ,
27
31
}
28
32
29
33
impl OptimizationDiagnosticKind {
30
34
pub fn describe ( self ) -> & ' static str {
31
35
match self {
32
- OptimizationRemark => "remark" ,
36
+ OptimizationRemark |
37
+ OptimizationRemarkOther => "remark" ,
33
38
OptimizationMissed => "missed" ,
34
39
OptimizationAnalysis => "analysis" ,
40
+ OptimizationAnalysisFPCommute => "floating-point" ,
41
+ OptimizationAnalysisAliasing => "aliasing" ,
35
42
OptimizationFailure => "failure" ,
36
43
}
37
44
}
@@ -58,11 +65,11 @@ impl OptimizationDiagnostic {
58
65
message : ptr:: null_mut ( ) ,
59
66
} ;
60
67
61
- super :: LLVMUnpackOptimizationDiagnostic ( di,
62
- & mut opt. pass_name ,
63
- & mut opt. function ,
64
- & mut opt. debug_loc ,
65
- & mut opt. message ) ;
68
+ super :: LLVMRustUnpackOptimizationDiagnostic ( di,
69
+ & mut opt. pass_name ,
70
+ & mut opt. function ,
71
+ & mut opt. debug_loc ,
72
+ & mut opt. message ) ;
66
73
67
74
opt
68
75
}
@@ -84,10 +91,10 @@ impl InlineAsmDiagnostic {
84
91
instruction : ptr:: null_mut ( ) ,
85
92
} ;
86
93
87
- super :: LLVMUnpackInlineAsmDiagnostic ( di,
88
- & mut opt. cookie ,
89
- & mut opt. message ,
90
- & mut opt. instruction ) ;
94
+ super :: LLVMRustUnpackInlineAsmDiagnostic ( di,
95
+ & mut opt. cookie ,
96
+ & mut opt. message ,
97
+ & mut opt. instruction ) ;
91
98
92
99
opt
93
100
}
@@ -103,24 +110,39 @@ pub enum Diagnostic {
103
110
104
111
impl Diagnostic {
105
112
pub unsafe fn unpack ( di : DiagnosticInfoRef ) -> Diagnostic {
106
- let kind = super :: LLVMGetDiagInfoKind ( di) ;
113
+ use super :: DiagnosticKind as Dk ;
114
+ let kind = super :: LLVMRustGetDiagInfoKind ( di) ;
107
115
108
116
match kind {
109
- super :: DK_InlineAsm => InlineAsm ( InlineAsmDiagnostic :: unpack ( di) ) ,
117
+ Dk :: InlineAsm => InlineAsm ( InlineAsmDiagnostic :: unpack ( di) ) ,
110
118
111
- super :: DK_OptimizationRemark => {
119
+ Dk :: OptimizationRemark => {
112
120
Optimization ( OptimizationDiagnostic :: unpack ( OptimizationRemark , di) )
113
121
}
114
-
115
- super :: DK_OptimizationRemarkMissed => {
122
+ Dk :: OptimizationRemarkOther => {
123
+ Optimization ( OptimizationDiagnostic :: unpack ( OptimizationRemarkOther , di) )
124
+ }
125
+ Dk :: OptimizationRemarkMissed => {
116
126
Optimization ( OptimizationDiagnostic :: unpack ( OptimizationMissed , di) )
117
127
}
118
128
119
- super :: DK_OptimizationRemarkAnalysis => {
129
+ Dk :: OptimizationRemarkAnalysis => {
120
130
Optimization ( OptimizationDiagnostic :: unpack ( OptimizationAnalysis , di) )
121
131
}
122
132
123
- super :: DK_OptimizationFailure => {
133
+
134
+ Dk :: OptimizationRemarkAnalysisFPCommute => {
135
+ Optimization ( OptimizationDiagnostic :: unpack (
136
+ OptimizationAnalysisFPCommute , di) )
137
+ }
138
+
139
+ Dk :: OptimizationRemarkAnalysisAliasing => {
140
+ Optimization ( OptimizationDiagnostic :: unpack (
141
+ OptimizationAnalysisAliasing , di) )
142
+ }
143
+
144
+
145
+ Dk :: OptimizationFailure => {
124
146
Optimization ( OptimizationDiagnostic :: unpack ( OptimizationFailure , di) )
125
147
}
126
148
0 commit comments