Skip to content

Commit dede47f

Browse files
Sketched profiling loop
1 parent b1e9927 commit dede47f

3 files changed

Lines changed: 30 additions & 15 deletions

File tree

aspis.sh

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -407,24 +407,39 @@ run_aspis() {
407407
done < "$asm_file";
408408
fi;
409409

410-
## Backend
411-
exe $OPT $build_dir/out.ll -o $build_dir/out.ll -S $opt_flags
412-
if [[ -n "$enable_profiling" ]]; then
413-
title_msg "ASPIS Profiling"
414-
exe $OPT --enable-new-pm=1 -load-pass-plugin=$DIR/build/passes/libPROFILER.so --passes="aspis-insert-check-profile" $build_dir/out.ll -o $build_dir/out.ll -S
415-
success_msg "Code instrumented."
410+
#passes="annotation2metadata,forceattrs,inferattrs,coro-early,function<eager-inv>(lower-expect,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;no-switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,sroa<modify-cfg>,early-cse<>),openmp-opt,ipsccp,called-value-propagation,globalopt,function(mem2reg),function<eager-inv>(instcombine,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>),require<globals-aa>,function(invalidate<aa>),require<profile-summary>,cgscc(devirt<4>(inline<only-mandatory>,inline,function-attrs,openmp-opt-cgscc,function<eager-inv>(sroa<modify-cfg>,early-cse<memssa>,speculative-execution,jump-threading,correlated-propagation,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,instcombine,libcalls-shrinkwrap,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,reassociate,require<opt-remark-emit>,loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate,licm<allowspeculation>,simple-loop-unswitch<no-nontrivial;trivial>),simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,instcombine,loop(loop-idiom,indvars,loop-deletion,loop-unroll-full),sroa<modify-cfg>,vector-combine,mldst-motion<no-split-footer-bb>,gvn<>,sccp,bdce,instcombine,jump-threading,correlated-propagation,adce,memcpyopt,dse,loop-mssa(licm<allowspeculation>),coro-elide,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;sink-common-insts>,instcombine),coro-split)),deadargelim,coro-cleanup,globalopt,globaldce,elim-avail-extern,rpo-function-attrs,recompute-globalsaa,function<eager-inv>(float2int,lower-constant-intrinsics,loop(loop-rotate,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,loop-load-elim,instcombine,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts>,slp-vectorizer,vector-combine,instcombine,loop-unroll<O2>,transform-warning,sroa<preserve-cfg>,instcombine,require<opt-remark-emit>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>),globaldce,constmerge,cg-profile,rel-lookup-table-converter,function(annotation-remarks),verify"
411+
IFS=',' read -r -a items <<< "$passes"
416412

417-
exe $CLANG $clang_options $build_dir/out.ll $asm_files -o $build_dir/$output_file
418-
success_msg "Instrumented binary emitted."
413+
> analysis.txt
414+
touch analysis.txt
419415

420-
exe $build_dir/$output_file
421-
success_msg "Profiled code executed."
416+
if [[ "$enable_profiling" == "true" ]]; then
417+
mv out.ll preopt.ll
418+
while [ "${#items[@]}" -gt 0 ]; do
419+
# Print the current array as comma-separated values
420+
seq=$(IFS=','; echo "${items[*]}")
422421

423-
echo -e "Analyzing..."
424-
exe $OPT --enable-new-pm=1 -load-pass-plugin=$DIR/build/passes/libPROFILER.so --passes="aspis-check-profile" $build_dir/out.ll -o $build_dir/out.ll -S
422+
## Backend
423+
exe $OPT $build_dir/preopt.ll -o $build_dir/out.ll -S --enable-new-pm=1 --passes=$seq # -print-pipeline-passes
424+
425+
title_msg "ASPIS Profiling"
426+
exe $OPT --enable-new-pm=1 -load-pass-plugin=$DIR/build/passes/libPROFILER.so --passes="aspis-insert-check-profile" $build_dir/out.ll -o $build_dir/out.ll -S
427+
success_msg "Code instrumented."
428+
429+
exe $CLANG $clang_options $build_dir/out.ll $asm_files -o $build_dir/$output_file
430+
success_msg "Instrumented binary emitted."
431+
432+
exe $build_dir/$output_file
433+
success_msg "Profiled code executed."
434+
435+
echo -e "Analyzing..."
436+
$OPT --enable-new-pm=1 -load-pass-plugin=$DIR/build/passes/libPROFILER.so --passes="aspis-check-profile" $build_dir/out.ll -o $build_dir/out.ll -S 2>> analysis.txt
437+
438+
# Remove the last element
439+
unset 'items[-1]'
440+
done
425441
exit
426442
fi;
427-
428443
exe $CLANG $clang_options $build_dir/out.ll $asm_files -o $build_dir/$output_file
429444
success_msg "Binary emitted."
430445

passes/EDDI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1190,7 +1190,7 @@ PreservedAnalyses EDDI::run(Module &Md, ModuleAnalysisManager &AM) {
11901190
}
11911191
else {
11921192
//auto FnDup = getFunctionDuplicate(&Fn);
1193-
if (/* !Fn.getName().equals("main") && */ !Fn.getName().equals("DataCorruption_Handler") && !Fn.getName().equals("SigMismatch_Handler") && !Fn.isDeclaration() && Fn.getNumUses() == 0) {
1193+
if (!Fn.getName().equals("main") && !Fn.getName().equals("DataCorruption_Handler") && !Fn.getName().equals("SigMismatch_Handler") && !Fn.isDeclaration() && Fn.getNumUses() == 0) {
11941194
FnsToRemove.push_back(&Fn);
11951195
}
11961196
}

passes/Profiling/ASPISCheckProfiler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ PreservedAnalyses ASPISCheckProfiler::run(Module &Md, ModuleAnalysisManager &AM)
153153
}
154154
}
155155

156-
errs() << "Found " << SyncPts.size() << " Syncronization Points\n";
156+
// errs() << "Found " << SyncPts.size() << " Syncronization Points\n";
157157

158158
std::set<Instruction*> done;
159159
for (auto I : SyncPts) {

0 commit comments

Comments
 (0)