8
8
// option. This file may not be copied, modified, or distributed
9
9
// except according to those terms.
10
10
11
- use std:: c_str:: ToCStr ;
12
-
13
- use back:: link;
14
- use lib;
15
11
use lib:: llvm:: * ;
16
12
use middle:: lang_items:: { FailFnLangItem , FailBoundsCheckFnLangItem } ;
17
- use middle:: lang_items:: LogTypeFnLangItem ;
18
13
use middle:: trans:: base:: * ;
19
14
use middle:: trans:: build:: * ;
20
15
use middle:: trans:: callee;
@@ -28,7 +23,6 @@ use middle::trans::type_::Type;
28
23
29
24
use syntax:: ast;
30
25
use syntax:: ast:: Ident ;
31
- use syntax:: ast_map:: path_mod;
32
26
use syntax:: ast_util;
33
27
use syntax:: codemap:: Span ;
34
28
@@ -206,72 +200,6 @@ pub fn trans_loop(bcx:@mut Block,
206
200
return next_bcx;
207
201
}
208
202
209
- pub fn trans_log ( log_ex : & ast:: Expr ,
210
- lvl : @ast:: Expr ,
211
- bcx : @mut Block ,
212
- e : @ast:: Expr ) -> @mut Block {
213
- let _icx = push_ctxt ( "trans_log" ) ;
214
- let ccx = bcx. ccx ( ) ;
215
- let mut bcx = bcx;
216
- if ty:: type_is_bot ( expr_ty ( bcx, lvl) ) {
217
- return expr:: trans_into ( bcx, lvl, expr:: Ignore ) ;
218
- }
219
-
220
- let ( modpath, modname) = {
221
- let path = & mut bcx. fcx . path ;
222
- let mut modpath = ~[ path_mod ( ccx. sess . ident_of ( ccx. link_meta . name ) ) ] ;
223
- for e in path. iter ( ) {
224
- match * e {
225
- path_mod( _) => { modpath. push ( * e) }
226
- _ => { }
227
- }
228
- }
229
- let modname = path_str ( ccx. sess , modpath) ;
230
- ( modpath, modname)
231
- } ;
232
-
233
- let global = if ccx. module_data . contains_key ( & modname) {
234
- ccx. module_data . get_copy ( & modname)
235
- } else {
236
- let s = link:: mangle_internal_name_by_path_and_seq (
237
- ccx, modpath, "loglevel" ) ;
238
- let global;
239
- unsafe {
240
- global = do s. with_c_str |buf| {
241
- llvm:: LLVMAddGlobal ( ccx. llmod , Type :: i32 ( ) . to_ref ( ) , buf)
242
- } ;
243
- llvm:: LLVMSetGlobalConstant ( global, False ) ;
244
- llvm:: LLVMSetInitializer ( global, C_null ( Type :: i32 ( ) ) ) ;
245
- lib:: llvm:: SetLinkage ( global, lib:: llvm:: InternalLinkage ) ;
246
- }
247
- ccx. module_data . insert ( modname, global) ;
248
- global
249
- } ;
250
- let current_level = Load ( bcx, global) ;
251
- let level = unpack_result ! ( bcx, {
252
- do with_scope_result( bcx, lvl. info( ) , "level" ) |bcx| {
253
- expr:: trans_to_datum( bcx, lvl) . to_result( )
254
- }
255
- } ) ;
256
-
257
- let llenabled = ICmp ( bcx, lib:: llvm:: IntUGE , current_level, level) ;
258
- do with_cond( bcx, llenabled) |bcx| {
259
- do with_scope ( bcx, log_ex. info ( ) , "log" ) |bcx| {
260
- let mut bcx = bcx;
261
-
262
- // Translate the value to be logged
263
- let val_datum = unpack_datum ! ( bcx, expr:: trans_to_datum( bcx, e) ) ;
264
-
265
- // Call the polymorphic log function
266
- let val = val_datum. to_ref_llval ( bcx) ;
267
- let did = langcall ( bcx, Some ( e. span ) , "" , LogTypeFnLangItem ) ;
268
- let bcx = callee:: trans_lang_call_with_type_params (
269
- bcx, did, [ level, val] , [ val_datum. ty ] , expr:: Ignore ) ;
270
- bcx
271
- }
272
- }
273
- }
274
-
275
203
pub fn trans_break_cont ( bcx : @mut Block ,
276
204
opt_label : Option < Ident > ,
277
205
to_end : bool )
0 commit comments