; ModuleID = 'DynamicCost.cpp' target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" target triple = "x86_64-apple-macosx10.9.0" %struct.mach_timebase_info = type { i32, i32 } %class.DynamicImplementation = type { %class.DynamicInterface, i64 } %class.DynamicInterface = type { i32 (...)** } @.str = private unnamed_addr constant [16 x i8] c"Got value %llu\0A\00", align 1 @.str1 = private unnamed_addr constant [37 x i8] c"Execution time dynamic dispatch: %f\0A\00", align 1 @.str2 = private unnamed_addr constant [25 x i8] c"Execution time crtp: %f\0A\00", align 1 @_ZTV21DynamicImplementation = linkonce_odr unnamed_addr constant [4 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTI21DynamicImplementation to i8*), i8* bitcast (void (%class.DynamicImplementation*, i64)* @_ZN21DynamicImplementation4tickEy to i8*), i8* bitcast (i64 (%class.DynamicImplementation*)* @_ZN21DynamicImplementation8getValueEv to i8*)] @_ZTVN10__cxxabiv120__si_class_type_infoE = external global i8* @_ZTS21DynamicImplementation = linkonce_odr constant [24 x i8] c"21DynamicImplementation\00" @_ZTVN10__cxxabiv117__class_type_infoE = external global i8* @_ZTS16DynamicInterface = linkonce_odr constant [19 x i8] c"16DynamicInterface\00" @_ZTI16DynamicInterface = linkonce_odr unnamed_addr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16DynamicInterface, i32 0, i32 0) } @_ZTI21DynamicImplementation = linkonce_odr unnamed_addr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21DynamicImplementation, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTI16DynamicInterface to i8*) } define double @_Z16getExecutionTimePFyvE(i64 ()* nocapture %f) ssp uwtable { %info = alloca %struct.mach_timebase_info, align 4 %1 = call i32 @mach_timebase_info(%struct.mach_timebase_info* %info) %2 = icmp eq i32 %1, 0 br i1 %2, label %3, label %19 ;