Skip to content

Instantly share code, notes, and snippets.

@syoyo
Created March 7, 2009 08:39
Show Gist options
  • Save syoyo/75276 to your computer and use it in GitHub Desktop.
Save syoyo/75276 to your computer and use it in GitHub Desktop.
$ llvm-gcc -S -emit-llvm -fnested-functions main.c
; ModuleID = 'main.c'
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "i386-apple-darwin9.6"
%struct.FRAME.muda = type { float }
define float @muda(float %x) nounwind {
entry:
%x_addr = alloca float ; <float*> [#uses=2]
%retval = alloca float ; <float*> [#uses=2]
%y = alloca float ; <float*> [#uses=0]
%0 = alloca float ; <float*> [#uses=2]
%FRAME.0 = alloca %struct.FRAME.muda ; <%struct.FRAME.muda*> [#uses=1]
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
store float %x, float* %x_addr
%1 = load float* %x_addr, align 4 ; <float> [#uses=1]
%2 = call float @bora.1447(%struct.FRAME.muda* nest %FRAME.0, float %1) nounwind ; <float> [#uses=1]
store float %2, float* %0, align 4
%3 = load float* %0, align 4 ; <float> [#uses=1]
store float %3, float* %retval, align 4
br label %return
return: ; preds = %entry
%retval1 = load float* %retval ; <float> [#uses=1]
ret float %retval1
}
define internal float @bora.1447(%struct.FRAME.muda* nest %CHAIN.1, float %z) nounwind {
entry:
%CHAIN.1_addr = alloca %struct.FRAME.muda* ; <%struct.FRAME.muda**> [#uses=2]
%z_addr = alloca float ; <float*> [#uses=2]
%retval = alloca float ; <float*> [#uses=2]
%0 = alloca float ; <float*> [#uses=2]
%1 = alloca float ; <float*> [#uses=2]
%"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
store %struct.FRAME.muda* %CHAIN.1, %struct.FRAME.muda** %CHAIN.1_addr
store float %z, float* %z_addr
%2 = load %struct.FRAME.muda** %CHAIN.1_addr, align 4 ; <%struct.FRAME.muda*> [#uses=1]
%3 = getelementptr %struct.FRAME.muda* %2, i32 0, i32 0 ; <float*> [#uses=1]
%4 = load float* %3, align 4 ; <float> [#uses=1]
store float %4, float* %1, align 4
%5 = load float* %1, align 4 ; <float> [#uses=1]
%6 = load float* %z_addr, align 4 ; <float> [#uses=1]
%7 = add float %5, %6 ; <float> [#uses=1]
store float %7, float* %0, align 4
%8 = load float* %0, align 4 ; <float> [#uses=1]
store float %8, float* %retval, align 4
br label %return
return: ; preds = %entry
%retval1 = load float* %retval ; <float> [#uses=1]
ret float %retval1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment