about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-10-23 21:46:03 -0700
committerbors <bors@rust-lang.org>2013-10-23 21:46:03 -0700
commitf27dfa04e5535538f9ef389c29b814bcdfa91ba3 (patch)
treec76daf4c1cb2eff63fce020fde783e071d3da173
parente2428b791c5a4074ca712ab3b145ee05c2d67ead (diff)
parentce54c34f02761f32e78473224bca28fa3b9ea5ed (diff)
downloadrust-f27dfa04e5535538f9ef389c29b814bcdfa91ba3.tar.gz
rust-f27dfa04e5535538f9ef389c29b814bcdfa91ba3.zip
auto merge of #10040 : thestinger/rust/frame_address, r=alexcrichton
Closes #10001
-rw-r--r--src/librustc/middle/trans/intrinsic.rs35
-rw-r--r--src/librustc/middle/typeck/check/mod.rs15
2 files changed, 2 insertions, 48 deletions
diff --git a/src/librustc/middle/trans/intrinsic.rs b/src/librustc/middle/trans/intrinsic.rs
index e627f39f201..f580683cd4e 100644
--- a/src/librustc/middle/trans/intrinsic.rs
+++ b/src/librustc/middle/trans/intrinsic.rs
@@ -10,27 +10,23 @@
 
 #[allow(non_uppercase_pattern_statics)];
 
-use back::{abi};
+use back::abi;
 use lib::llvm::{SequentiallyConsistent, Acquire, Release, Xchg};
 use lib::llvm::{ValueRef, Pointer, Array, Struct};
 use lib;
 use middle::trans::base::*;
 use middle::trans::build::*;
-use middle::trans::callee::*;
 use middle::trans::common::*;
 use middle::trans::datum::*;
 use middle::trans::type_of::*;
 use middle::trans::type_of;
-use middle::trans::expr::Ignore;
 use middle::trans::machine;
 use middle::trans::glue;
-use middle::ty::FnSig;
 use middle::ty;
 use syntax::ast;
 use syntax::ast_map;
 use syntax::attr;
-use syntax::opt_vec;
-use util::ppaux::{ty_to_str};
+use util::ppaux::ty_to_str;
 use middle::trans::machine::llsize_of;
 use middle::trans::type_::Type;
 
@@ -387,33 +383,6 @@ pub fn trans_intrinsic(ccx: @mut CrateContext,
                                         abi::tydesc_field_visit_glue, None);
             RetVoid(bcx);
         }
-        "frame_address" => {
-            let frameaddress = ccx.intrinsics.get_copy(& &"llvm.frameaddress");
-            let frameaddress_val = Call(bcx, frameaddress, [C_i32(0i32)], []);
-            let star_u8 = ty::mk_imm_ptr(
-                bcx.tcx(),
-                ty::mk_mach_uint(ast::ty_u8));
-            let fty = ty::mk_closure(bcx.tcx(), ty::ClosureTy {
-                purity: ast::impure_fn,
-                sigil: ast::BorrowedSigil,
-                onceness: ast::Many,
-                region: ty::re_bound(ty::br_anon(0)),
-                bounds: ty::EmptyBuiltinBounds(),
-                sig: FnSig {
-                    bound_lifetime_names: opt_vec::Empty,
-                    inputs: ~[ star_u8 ],
-                    output: ty::mk_nil()
-                }
-            });
-            let datum = Datum {val: get_param(decl, first_real_arg),
-                               mode: ByRef(ZeroMem), ty: fty};
-            let arg_vals = ~[frameaddress_val];
-            bcx = trans_call_inner(
-                bcx, None, fty, ty::mk_nil(),
-                |bcx| Callee {bcx: bcx, data: Closure(datum)},
-                ArgVals(arg_vals), Some(Ignore), DontAutorefArg).bcx;
-            RetVoid(bcx);
-        }
         "morestack_addr" => {
             // XXX This is a hack to grab the address of this particular
             // native function. There should be a general in-language
diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs
index 4514564ff1f..50ab7825de6 100644
--- a/src/librustc/middle/typeck/check/mod.rs
+++ b/src/librustc/middle/typeck/check/mod.rs
@@ -3645,21 +3645,6 @@ pub fn check_intrinsic_type(ccx: @mut CrateCtxt, it: @ast::foreign_item) {
               });
               (0, ~[ td_ptr, visitor_object_ty ], ty::mk_nil())
             }
-            "frame_address" => {
-              let fty = ty::mk_closure(ccx.tcx, ty::ClosureTy {
-                  purity: ast::impure_fn,
-                  sigil: ast::BorrowedSigil,
-                  onceness: ast::Many,
-                  region: ty::re_bound(ty::br_anon(0)),
-                  bounds: ty::EmptyBuiltinBounds(),
-                  sig: ty::FnSig {
-                      bound_lifetime_names: opt_vec::Empty,
-                      inputs: ~[ty::mk_imm_ptr(ccx.tcx, ty::mk_mach_uint(ast::ty_u8))],
-                      output: ty::mk_nil()
-                  }
-              });
-              (0u, ~[fty], ty::mk_nil())
-            }
             "morestack_addr" => {
               (0u, ~[], ty::mk_nil_ptr(ccx.tcx))
             }