- stores with no dependency (post-order traversal reaches end of mssa):
- store to alloca
- dead on unwind, so elim even if
- store to alloca
- store post-dommed regular store
- should must-alias or partial-alias the first store
- store post-dommed by a free, lifetime_end
- should must-alias or partial-alias the store
- store immediately dominated by a free, lifetime_end
- kill if must-alias
This file contains hidden or 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
| cmake_minimum_required(VERSION 3.4) | |
| execute_process( | |
| COMMAND "grep" "^processor" "/proc/cpuinfo" | |
| COMMAND "wc" "-l" | |
| COMMAND "tr" "-d" "'\n'" | |
| OUTPUT_VARIABLE ncpu | |
| ) | |
| set(GIT_ORIGIN "file://$ENV{HOME}/usr/git" CACHE STRING "") |
This file contains hidden or 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
| from random import choice | |
| from string import lowercase | |
| from datetime import datetime | |
| answers = [ | |
| "alpha", | |
| "bravo", | |
| "charlie", | |
| "delta", | |
| "echo", |
This file contains hidden or 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
| static void | |
| compute_dominance_frontiers_1 (bitmap_head *frontiers) | |
| { | |
| edge p; | |
| edge_iterator ei; | |
| basic_block b; | |
| FOR_EACH_BB_FN (b, cfun) | |
| { | |
| if (EDGE_COUNT (b->preds) >= 2) |
This file contains hidden or 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
| load-to-store of agg => memcpy/memmove (processStore) | |
| call-load-to-store of non-agg => call-direct (processStore, | |
| performCallSlotOptzn) | |
| byte-wise store sequence => memset (processStore, tryMergingIntoMemset) | |
| store to agg => memset (processStore) | |
| memset => widen memset with neighboring stores/memset (processMemSet) | |
| erase identity memcpy (processMemCpy) | |
| memcpy from global constant => memset (processMemCpy) | |
| memset-memcpy => memcpy-memset with disjoint dest ranges (processMemCpy, | |
| processMemSetMemCpyDependence) |
main spre entry point is Perform_SPRE_optimization. calls:
Propagate_downsafeSPRE_compute_backward_attributes- which just forwards to
Compute_forward_attributes.
- which just forwards to
SPRE_compute_insert_deleteSPRE_perform_insert_delete
[]( vim: set syntax=markdown textwidth=80 tabstop=2 shiftwidth=2: )
This file contains hidden or 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
| # what? i was bored. | |
| class Identicon(object): | |
| def __init__(self, bg, fg, border=35, block=71, count=5): | |
| self.bg = bg | |
| self.fg = fg | |
| self.border = border | |
| self.block = block | |
| self.count = count |
This file contains hidden or 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
| %struct.S = type { [65536 x i8] } | |
| ; Function Attrs: nounwind uwtable | |
| define void @f(%struct.S* noalias nocapture sret, %struct.S* nocapture readonly, %struct.S* nocapture readonly) local_unnamed_addr #0 { | |
| %4 = alloca %struct.S, align 1 | |
| %5 = getelementptr inbounds %struct.S, %struct.S* %4, i64 0, i32 0, i64 0 | |
| call void @llvm.lifetime.start(i64 65536, i8* %5) #2 | |
| %6 = getelementptr inbounds %struct.S, %struct.S* %1, i64 0, i32 0, i64 0 | |
| %7 = load i8, i8* %6, align 1 | |
| %8 = getelementptr inbounds %struct.S, %struct.S* %2, i64 0, i32 0, i64 0 |
NewerOlder