88// option. This file may not be copied, modified, or distributed
99// except according to those terms.
1010
11- use std:: c_str:: ToCStr ;
12-
13- use back:: link;
14- use lib;
1511use lib:: llvm:: * ;
1612use middle:: lang_items:: { FailFnLangItem , FailBoundsCheckFnLangItem } ;
17- use middle:: lang_items:: LogTypeFnLangItem ;
1813use middle:: trans:: base:: * ;
1914use middle:: trans:: build:: * ;
2015use middle:: trans:: callee;
@@ -28,7 +23,6 @@ use middle::trans::type_::Type;
2823
2924use syntax:: ast;
3025use syntax:: ast:: Ident ;
31- use syntax:: ast_map:: path_mod;
3226use syntax:: ast_util;
3327use syntax:: codemap:: Span ;
3428
@@ -206,72 +200,6 @@ pub fn trans_loop(bcx:@mut Block,
206200 return next_bcx;
207201}
208202
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-
275203pub fn trans_break_cont ( bcx : @mut Block ,
276204 opt_label : Option < Ident > ,
277205 to_end : bool )
0 commit comments