Created
January 24, 2018 02:59
-
-
Save alexcrichton/715515a1967ccc0bc1d47e285aa372e3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'panic_macro_fmt0-317d481089b8c8fe83113de504472633.rs' | |
source_filename = "panic_macro_fmt0-317d481089b8c8fe83113de504472633.rs" | |
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" | |
target triple = "arm-unknown-linux-gnueabihf" | |
%"core::ops::function::Fn<(), Output=i32>" = type {} | |
%"core::fmt::Formatter" = type { [0 x i32], i32, [0 x i32], i32, [0 x i32], %"core::option::Option<usize>", [0 x i32], %"core::option::Option<usize>", [0 x i32], { %"core::fmt::Write"*, {}* }, [0 x i32], { i32*, i32* }, [0 x i32], { [0 x { i8*, i8* }]*, i32 }, [0 x i8], i8, [3 x i8] } | |
%"core::option::Option<usize>" = type { [0 x i32], i32, [1 x i32] } | |
%"core::fmt::Write" = type {} | |
%"core::fmt::Arguments" = type { [0 x i32], { [0 x { [0 x i8]*, i32 }]*, i32 }, [0 x i32], %"core::option::Option<&[core::fmt::rt::v1::Argument]>", [0 x i32], { [0 x { i8*, i8* }]*, i32 }, [0 x i32] } | |
%"core::option::Option<&[core::fmt::rt::v1::Argument]>" = type { [0 x i32], {}*, [1 x i32] } | |
%"core::fmt::rt::v1::Argument" = type { [0 x i32], %"core::fmt::rt::v1::Position", [0 x i32], %"core::fmt::rt::v1::FormatSpec", [0 x i32] } | |
%"core::fmt::rt::v1::Position" = type { [0 x i32], i32, [1 x i32] } | |
%"core::fmt::rt::v1::FormatSpec" = type { [0 x i32], i32, [0 x i32], i32, [0 x i32], %"core::fmt::rt::v1::Count", [0 x i32], %"core::fmt::rt::v1::Count", [0 x i8], i8, [3 x i8] } | |
%"core::fmt::rt::v1::Count" = type { [0 x i32], i32, [1 x i32] } | |
%"unwind::libunwind::_Unwind_Exception" = type { [0 x i64], i64, [0 x i32], void (i32, %"unwind::libunwind::_Unwind_Exception"*)*, [0 x i32], [20 x i32], [1 x i32] } | |
%"unwind::libunwind::_Unwind_Context" = type { [0 x i8] } | |
@vtable.0 = private unnamed_addr constant { void (i8**)*, i32, i32, i32 (i8**)*, i32 (i8**)*, i32 (i8*)* } { void (i8**)* @_ZN4core3ptr13drop_in_place17h9fcfc3288b308a40E, i32 4, i32 4, i32 (i8**)* @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8d2388017df036f2E", i32 (i8**)* @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8d2388017df036f2E", i32 (i8*)* @_ZN4core3ops8function6FnOnce9call_once17h0107fd4c19a0a4e1E }, align 4 | |
@str.1 = internal constant [0 x i8] zeroinitializer | |
@str.2 = internal constant [1 x i8] c" " | |
@ref.3 = private unnamed_addr constant [2 x { [0 x i8]*, i32 }] [{ [0 x i8]*, i32 } { [0 x i8]* @str.1, i32 0 }, { [0 x i8]*, i32 } { [0 x i8]* bitcast ([1 x i8]* @str.2 to [0 x i8]*), i32 1 }], align 4 | |
@ref.4 = private unnamed_addr constant i32 0, align 4 | |
@ref.5 = private unnamed_addr constant { [0 x i8]*, i32 } { [0 x i8]* @str.1, i32 0 }, align 4 | |
@ref.6 = private unnamed_addr constant { { [0 x i8], { i32, [0 x i8], i32, [0 x i8] }, [0 x i8], { [0 x i8], i32, [0 x i8], i32, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], i8, [3 x i8] }, [0 x i8] }, { [0 x i8], { i32, [0 x i8], i32, [0 x i8] }, [0 x i8], { [0 x i8], i32, [0 x i8], i32, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], i8, [3 x i8] }, [0 x i8] } } { { [0 x i8], { i32, [0 x i8], i32, [0 x i8] }, [0 x i8], { [0 x i8], i32, [0 x i8], i32, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], i8, [3 x i8] }, [0 x i8] } { [0 x i8] undef, { i32, [0 x i8], i32, [0 x i8] } { i32 1, [0 x i8] undef, i32 0, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], i32, [0 x i8], i32, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], i8, [3 x i8] } { [0 x i8] undef, i32 32, [0 x i8] undef, i32 0, [0 x i8] undef, <{ i32, [4 x i8] }> <{ i32 3, [4 x i8] undef }>, [0 x i8] undef, <{ i32, [4 x i8] }> <{ i32 3, [4 x i8] undef }>, [0 x i8] undef, i8 3, [3 x i8] undef }, [0 x i8] undef }, { [0 x i8], { i32, [0 x i8], i32, [0 x i8] }, [0 x i8], { [0 x i8], i32, [0 x i8], i32, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], i8, [3 x i8] }, [0 x i8] } { [0 x i8] undef, { i32, [0 x i8], i32, [0 x i8] } { i32 1, [0 x i8] undef, i32 1, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], i32, [0 x i8], i32, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], i8, [3 x i8] } { [0 x i8] undef, i32 32, [0 x i8] undef, i32 0, [0 x i8] undef, <{ i32, [4 x i8] }> <{ i32 3, [4 x i8] undef }>, [0 x i8] undef, <{ i32, [4 x i8] }> <{ i32 3, [4 x i8] undef }>, [0 x i8] undef, i8 3, [3 x i8] undef }, [0 x i8] undef } }, align 4 | |
@str.8 = internal constant [36 x i8] c"src/test/run-fail/panic-macro-fmt.rs" | |
@ref.9 = private unnamed_addr constant { [0 x i8], { [0 x i8]*, i32 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] } { [0 x i8] undef, { [0 x i8]*, i32 } { [0 x i8]* bitcast ([36 x i8]* @str.8 to [0 x i8]*), i32 36 }, [0 x i8] undef, i32 14, [0 x i8] undef, i32 5, [0 x i8] undef }, align 4 | |
; std::rt::lang_start | |
; Function Attrs: uwtable | |
define hidden i32 @_ZN3std2rt10lang_start17hed6fef385d80935dE(void ()* nonnull %main, i32 %argc, i8** %argv) unnamed_addr #0 { | |
start: | |
%_7 = alloca i8*, align 4 | |
%0 = bitcast i8** %_7 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %0) | |
%1 = bitcast i8** %_7 to void ()** | |
store void ()* %main, void ()** %1, align 4 | |
%2 = bitcast i8** %_7 to %"core::ops::function::Fn<(), Output=i32>"* | |
; call std::rt::lang_start_internal | |
%3 = call i32 @_ZN3std2rt19lang_start_internal17h0e5215cb9f3c1f91E(%"core::ops::function::Fn<(), Output=i32>"* nonnull %2, {}* noalias nonnull readonly bitcast ({ void (i8**)*, i32, i32, i32 (i8**)*, i32 (i8**)*, i32 (i8*)* }* @vtable.0 to {}*), i32 %argc, i8** %argv) | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %0) | |
ret i32 %3 | |
} | |
; std::rt::lang_start::{{closure}} | |
; Function Attrs: uwtable | |
define internal i32 @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h8d2388017df036f2E"(i8** noalias nocapture readonly dereferenceable(4) %arg0) unnamed_addr #0 { | |
start: | |
%0 = bitcast i8** %arg0 to void ()** | |
%1 = load void ()*, void ()** %0, align 4 | |
tail call void %1() | |
; call <() as std::termination::Termination>::report | |
%2 = tail call i32 @"_ZN58_$LT$$LP$$RP$$u20$as$u20$std..termination..Termination$GT$6report17hc1073ff0b2ae3977E"() | |
ret i32 %2 | |
} | |
; core::ops::function::FnOnce::call_once | |
; Function Attrs: uwtable | |
define internal i32 @_ZN4core3ops8function6FnOnce9call_once17h0107fd4c19a0a4e1E(i8* nonnull) unnamed_addr #0 personality i32 (i32, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality { | |
start: | |
%1 = bitcast i8* %0 to void ()* | |
tail call void %1() | |
; call <() as std::termination::Termination>::report | |
%2 = tail call i32 @"_ZN58_$LT$$LP$$RP$$u20$as$u20$std..termination..Termination$GT$6report17hc1073ff0b2ae3977E"() | |
ret i32 %2 | |
} | |
; core::ptr::drop_in_place | |
; Function Attrs: norecurse nounwind readnone uwtable | |
define internal void @_ZN4core3ptr13drop_in_place17h9fcfc3288b308a40E(i8** nocapture %arg0) unnamed_addr #1 { | |
start: | |
ret void | |
} | |
; <&'a T as core::fmt::Display>::fmt | |
; Function Attrs: uwtable | |
define internal zeroext i1 @"_ZN55_$LT$$RF$$u27$a$u20$T$u20$as$u20$core..fmt..Display$GT$3fmt17h640136b71e79ec71E"({ [0 x i8]*, i32 }* noalias nocapture readonly dereferenceable(8) %self, %"core::fmt::Formatter"* dereferenceable(52) %f) unnamed_addr #0 { | |
start: | |
%0 = getelementptr inbounds { [0 x i8]*, i32 }, { [0 x i8]*, i32 }* %self, i32 0, i32 0 | |
%1 = load [0 x i8]*, [0 x i8]** %0, align 4 | |
%2 = getelementptr inbounds { [0 x i8]*, i32 }, { [0 x i8]*, i32 }* %self, i32 0, i32 1 | |
%3 = load i32, i32* %2, align 4 | |
; call <str as core::fmt::Display>::fmt | |
%4 = tail call zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hacdc7c5a97110995E"([0 x i8]* noalias nonnull readonly %1, i32 %3, %"core::fmt::Formatter"* nonnull dereferenceable(52) %f) | |
ret i1 %4 | |
} | |
; panic_macro_fmt::main | |
; Function Attrs: noreturn uwtable | |
define internal void @_ZN15panic_macro_fmt4main17h99361a32497e6ebaE() unnamed_addr #2 { | |
start: | |
%_10 = alloca [2 x { i8*, i8* }], align 4 | |
%_3 = alloca %"core::fmt::Arguments", align 4 | |
%0 = bitcast %"core::fmt::Arguments"* %_3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %0) | |
%1 = bitcast [2 x { i8*, i8* }]* %_10 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %1) | |
%2 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %_10, i32 0, i32 0, i32 0 | |
store i8* bitcast (i32* @ref.4 to i8*), i8** %2, align 4 | |
%3 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %_10, i32 0, i32 0, i32 1 | |
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h7e68245a38d20917E" to i8*), i8** %3, align 4 | |
%4 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %_10, i32 0, i32 1, i32 0 | |
store i8* bitcast ({ [0 x i8]*, i32 }* @ref.5 to i8*), i8** %4, align 4 | |
%5 = getelementptr inbounds [2 x { i8*, i8* }], [2 x { i8*, i8* }]* %_10, i32 0, i32 1, i32 1 | |
store i8* bitcast (i1 ({ [0 x i8]*, i32 }*, %"core::fmt::Formatter"*)* @"_ZN55_$LT$$RF$$u27$a$u20$T$u20$as$u20$core..fmt..Display$GT$3fmt17h640136b71e79ec71E" to i8*), i8** %5, align 4 | |
%6 = bitcast %"core::fmt::Arguments"* %_3 to [0 x { [0 x i8]*, i32 }]** | |
store [0 x { [0 x i8]*, i32 }]* bitcast ([2 x { [0 x i8]*, i32 }]* @ref.3 to [0 x { [0 x i8]*, i32 }]*), [0 x { [0 x i8]*, i32 }]** %6, align 4 | |
%7 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_3, i32 0, i32 1, i32 1 | |
store i32 2, i32* %7, align 4 | |
%_5.sroa.0.0..sroa_idx.i = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_3, i32 0, i32 3 | |
%_5.sroa.0.0..sroa_cast1.i = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %_5.sroa.0.0..sroa_idx.i to [0 x %"core::fmt::rt::v1::Argument"]** | |
store [0 x %"core::fmt::rt::v1::Argument"]* bitcast ({ { [0 x i8], { i32, [0 x i8], i32, [0 x i8] }, [0 x i8], { [0 x i8], i32, [0 x i8], i32, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], i8, [3 x i8] }, [0 x i8] }, { [0 x i8], { i32, [0 x i8], i32, [0 x i8] }, [0 x i8], { [0 x i8], i32, [0 x i8], i32, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], <{ i32, [4 x i8] }>, [0 x i8], i8, [3 x i8] }, [0 x i8] } }* @ref.6 to [0 x %"core::fmt::rt::v1::Argument"]*), [0 x %"core::fmt::rt::v1::Argument"]** %_5.sroa.0.0..sroa_cast1.i, align 4 | |
%_5.sroa.4.0..sroa_idx3.i = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_3, i32 0, i32 3, i32 2, i32 0 | |
store i32 2, i32* %_5.sroa.4.0..sroa_idx3.i, align 4 | |
%8 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_3, i32 0, i32 5, i32 0 | |
%9 = bitcast [0 x { i8*, i8* }]** %8 to [2 x { i8*, i8* }]** | |
store [2 x { i8*, i8* }]* %_10, [2 x { i8*, i8* }]** %9, align 4 | |
%10 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %_3, i32 0, i32 5, i32 1 | |
store i32 2, i32* %10, align 4 | |
; call std::panicking::begin_panic_fmt | |
call void @_ZN3std9panicking15begin_panic_fmt17hfdc03dc8433a2e74E(%"core::fmt::Arguments"* noalias nonnull readonly dereferenceable(24) %_3, { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(16) bitcast ({ [0 x i8], { [0 x i8]*, i32 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] }* @ref.9 to { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*)) | |
unreachable | |
} | |
; std::rt::lang_start_internal | |
declare i32 @_ZN3std2rt19lang_start_internal17h0e5215cb9f3c1f91E(%"core::ops::function::Fn<(), Output=i32>"* nonnull, {}* noalias nonnull readonly, i32, i8**) unnamed_addr | |
; <() as std::termination::Termination>::report | |
declare i32 @"_ZN58_$LT$$LP$$RP$$u20$as$u20$std..termination..Termination$GT$6report17hc1073ff0b2ae3977E"() unnamed_addr | |
declare i32 @rust_eh_personality(i32, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*) unnamed_addr | |
; <str as core::fmt::Display>::fmt | |
declare zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hacdc7c5a97110995E"([0 x i8]* noalias nonnull readonly, i32, %"core::fmt::Formatter"* dereferenceable(52)) unnamed_addr | |
; core::fmt::num::<impl core::fmt::Display for i32>::fmt | |
declare zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h7e68245a38d20917E"(i32* noalias readonly dereferenceable(4), %"core::fmt::Formatter"* dereferenceable(52)) unnamed_addr | |
; std::panicking::begin_panic_fmt | |
; Function Attrs: cold noinline noreturn | |
declare void @_ZN3std9panicking15begin_panic_fmt17hfdc03dc8433a2e74E(%"core::fmt::Arguments"* noalias readonly dereferenceable(24), { [0 x i32], { [0 x i8]*, i32 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(16)) unnamed_addr #3 | |
define i32 @main(i32, i8**) unnamed_addr { | |
top: | |
%_7.i = alloca i8*, align 4 | |
%2 = bitcast i8** %_7.i to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %2) | |
%3 = bitcast i8** %_7.i to void ()** | |
store void ()* @_ZN15panic_macro_fmt4main17h99361a32497e6ebaE, void ()** %3, align 4 | |
%4 = bitcast i8** %_7.i to %"core::ops::function::Fn<(), Output=i32>"* | |
; call std::rt::lang_start_internal | |
%5 = call i32 @_ZN3std2rt19lang_start_internal17h0e5215cb9f3c1f91E(%"core::ops::function::Fn<(), Output=i32>"* nonnull %4, {}* noalias nonnull readonly bitcast ({ void (i8**)*, i32, i32, i32 (i8**)*, i32 (i8**)*, i32 (i8*)* }* @vtable.0 to {}*), i32 %0, i8** %1) | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %2) | |
ret i32 %5 | |
} | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #4 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #4 | |
attributes #0 = { uwtable } | |
attributes #1 = { norecurse nounwind readnone uwtable } | |
attributes #2 = { noreturn uwtable } | |
attributes #3 = { cold noinline noreturn } | |
attributes #4 = { argmemonly nounwind } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT | |
// file at the top-level directory of this distribution and at | |
// http://rust-lang.org/COPYRIGHT. | |
// | |
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | |
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | |
// option. This file may not be copied, modified, or distributed | |
// except according to those terms. | |
// error-pattern:panicked at 'test-fail-fmt 42 rust' | |
fn main() { | |
panic!("{} {}", 0, ""); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment