Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
H
hoopl
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Glasgow Haskell Compiler
Packages
hoopl
Commits
6aa39388
Commit
6aa39388
authored
Jan 18, 2016
by
Jan Stolarek
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove unused files
parent
2d7c9ae9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
0 additions
and
111 deletions
+0
-111
src/LOOPS
src/LOOPS
+0
-45
src/mkfile
src/mkfile
+0
-55
src/subdir.mk
src/subdir.mk
+0
-11
No files found.
src/LOOPS
deleted
100644 → 0
View file @
2d7c9ae9
Thoughts about loop-based analyses
==================================
A loop analysis will want to have certain inputs, perhaps including
- A set of loop headers
- The dominance relation
- The reachability relation
Let's assume
type Header = Label
type Headers = LabelSet
We can imagine doing loop analyses as follows:
- The dataflow fact is `Map Header f` where `f` is a lattice of
facts.
- If at a given point (edge) in the flow graph, header `H` is a key in the
map, then that point is reachable from `H`, and the fact stored in
the map is true on all paths that originate at `H` and terminate
at that point.
- If a given point (edge) in the flow graph cannot reach `H`, it is
safe (but not necessary) to delete `H` from the map. It is
probably worth deleting `H` if possible, because if nothing else
it will keep the program from allocating one thunk per node `N`
that is reachable from `H` but does not reach `H`.
- If at a given point in the flow graph, `H` is not a key in the map,
then we expect either the point is not reachable from `H` or it
does not reach `H`. That is, we want `H` to be a key at exactly
those points that are in a loop containing `H`.
- If a join function gets two maps and `H` is a key in just one of
them, the map without `H` can be ignored, since that edge is not
yet known to be reachable from `H`. We can therefore use the
empty map as a bottom element.
- If `join` is the join function on `f`, the join function on maps
can *almost* be defined using `Data.Map.unionWithKey f`, but
unfortunately not, because of the beastly `ChangeFlag`.
A person like Chris Rice should explore a suitable higher-order
function for lifting joins into finite maps.
src/mkfile
deleted
100644 → 0
View file @
2d7c9ae9
PKG=hoopl
SRC=Graph Label GraphUtil Fuel MkGraph Dataflow
VERSION=`awk '$1 == "Version:" { print $2 }' $PKG.cabal`
HOOPL=Compiler/Hoopl
HS=${SRC:%=$HOOPL/%.hs}
O=${SRC:%=$HOOPL/%.o}
CABAL=hoopl
CONFIG=.config.$CABAL
all:V: $O hoopl.pdf
dist:V: hoopl.pdf
cabal sdist
hoopl.pdf: ../paper/dfopt.pdf
cp -a -v $prereq $target
test:V:
cabal install --enable-documentation
(cd ../testing && mk test)
install:V: $CONFIG
cabal install --enable-documentation
build:V: $CONFIG
cabal build
check:V: $CONFIG
cabal check
upload:V: hoopl.pdf $CONFIG
cabal build
cabal sdist
cabal upload dist/$PKG-$VERSION.tar.gz
config:V: $CONFIG
.config.&:D: &.cabal
cabal configure --user > $target
clean:V:
rm -f `find [A-Z]* ../testing -name '*.o' -o '*.hi'`
%.pdf: %.tex
(cd `dirname $prereq`; mk `basename $target`)
%.o: %.hs
ghc --make -c $prereq
clean:V:
rm -f $HOOPL/*.o
rm -f $HOOPL/*.hi
rm -f *~ $HOOPL/*~
src/subdir.mk
deleted
100644 → 0
View file @
2d7c9ae9
all
:
V: obj
obj
:
V:
ghc
-i
$TOP
--make
*
.hs
clean
:
V:
rm
-f
*
.o
*
.hi
*
~
test install build check
:
V:
(
cd
$TOP
&&
mk
$target
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment