{"shas":[["6bb13ee59010d23497a823d78a33f98f870c8587","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Also apply available expression analysis to the condition of\nbifurcation states.","Steven Smith"],["0417715fc04308e9bb8385d956a9f18f49b9507b","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Better expression simplifier.","Steven Smith"],["2bf5443dd6cc768861c48731da208ad60a94b0c6","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Get a couple of the test programs to slurp in the tags table.","Steven Smith"],["69ac327e4888fcf2c99388810f7d81e95ccf04cd","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Don't crash if there's a branch in the write machine which can\nterminate without issuing any further stores.","Steven Smith"],["d9ed4d61e18172b074e56a8413beb86262cb6ce7","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Introduce a concept of free variables, which are supposed to be things\nwhich are completely unconstrained by all of our models and state\nmachines.\n\nThis will become more useful shortly.","Steven Smith"],["22868e4ed9a4dd79634415eb9511cf36e0328b0f","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","More work on using free variables in a sensible way.","Steven Smith"],["498cd00c4ef07533d44c8d097fb2c684f281ae10","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Be a bit more aggressive in introducing free variables.  We can turn a\nload into a free if there are no there are no other loads which\nprovably alias with it, not just if all other loads provably don't\nalias with it.\n\nThe reasoning here is moderately subtle.  Essentially, the only\ndownside of introducing free variables for loads is that you lose\ntrack of where the thing was loaded from.  If A and B are loaded from\nthe same location, and we can prove that they're the same location,\nthen under many situations you can assume A == B.  If we replace the\nloads with independent free variables then we can't make that\nassumption any more, which means that we'll spend longer and generate\nworse results.  However, if we *can't* prove that they're the same\nlocation, we also can't make the assumption.  That means that if we\ncan't prove they're the same, there are no disadvantages to\nintroducing free variables for them, and doing so can make the\nmachines quite a bit simpler.","Steven Smith"],["7d9c356ab68f90c570f6773d371ba1cf50f8d58e","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Having an aliasing store somewhere in the state machine shouldn't be\nsufficient to stop us from substituting in a free variable.  What\nmatters is that the store has to happen *before* the interesting load.\nRework things to take account of this observation.","Steven Smith"],["ddd60a808556eba6ebefde8a1c3db740875153ea","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Better expression optimising.","Steven Smith"],["8a090b328adb1da6ef5866fd1494a066e6e84ff2","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Whoops: make sure we short-circuit nested if states correctly.","Steven Smith"],["89113048b8bb67c2f87eb0614b22f24bb5809a92","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Use an explicit BadPtr expression in proximal causes, rather than just\nassuming that 0 is the only bad address.","Steven Smith"],["e274e229270707f67a49a4484536939a9193ab71","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","If you've dereferences a pointer, you can safely assume that that\npointer is itself valid.","Steven Smith"],["c70b2e69b57962430c6e682d2a4ab412a806aeba","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","More irexpr optimisations.","Steven Smith"],["c2a5c4fce4fd56b2c5a9a7a8d09c03bebb919ef7","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","If we find a contradiction while interpreting, just ignore that run.","Steven Smith"],["1cf4710d6c5ae2a9524717b38dad34033fd7e8db","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Introduce an explicit expression for calculating the overflow flag for\nsub operations.  The alternative ends up being just far too expensive\nin terms of exploding the expressions which we need to deal with.","Steven Smith"],["af4337195324b7e67a2471e47c9d203dfa43502c","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Extend the genfix instruction decoder a bit.","Steven Smith"],["20964c9fe8bba62ab002f70e439e601caad18f85","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Get rid of the silly hack of only considering size-3 store clusters.","Steven Smith"],["2eca06dd94980fe4f21199bc039857152bfe85a6","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Most of the machines we generate aren't terribly interesting, and\nyou're better off backing off a long way and then trying the earliest\nmachine you can find.  Do somethign similar: try the earliest machien\nand every fiftieth machine in between.","Steven Smith"],["5e4824f0114a97d285b55d1952303304290898c7","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Avoid infinite inlining of mutually recursive functions.","Steven Smith"],["b398156f9ec68dd77978c1485f1eee20b0867c18","fb240a6ef5c6ffa4867cbb1a385a05c0397eb9c1@cam.ac.uk","Have the sanity checker enforce that state machines are acyclic.","Steven Smith"]],"ref":"refs/heads/master","size":25,"head":"fec9c8aee3d69a64cc4eefad56365611bd76e548","push_id":34856694}