When we simplify branches-to-branches, assert that we actually found
the right branch.
Fix inlining of STMT_ASM.

Now that we actually save, evaluate and use the asm arguments,
we need to make sure to copy them properly too.
Simplify constant unops
Don't set the base type for __attribute__((__mode__(__DI__))) and friends.

That makes sparse unhappy if the base type has already been set by
other parts of the declaration - it will refuse to mix base types.

Problem reported by Santtu Hyrkkö
Linearize anonymous symbol initializers when we encounter them,

Also fix the printout of such unnamed symbol pseudos.
Don't output code for static/toplevel symbols.

It's cute and useful for debugging, but it ends up doing the wrong
thing, since now CSE and liveness analysis will see the intial values
as the "dynamic" ones, and make the wrong kind of assumptions about
dominating stores etc.
Make OP_PHISOURCE track the OP_PHI instructions that it defines.

This allows us to always see which pseudos are nonlocally affected
by the phi source.

We can only do this after the instruction flow is fixed, together
with the OP_DEATHNOTE phase.
Be more aggressive on PHI-node CSE.

We don't care _where_ a PHI-node is, since the real location
is at the phi sources. So unlike other instructions, we do not
bother with any dominance analysis - we can just combine them
blindly across basic block borders.

It might make sense to totally disconnect the PHI nodes from
the flow graph to make this lack of positional information
even more explicit. That might also allow us to combine more
basic blocks.
Add silly storage handling example.

This one links up the inter-bb usage pseudos to each other
with "storage" structures, which should make it possible to
write a simple code generator that doesn't need to worry
about any global state - all the decisions are local.

There are probably cases where this simply doesn't work, but
I want to try to start generating _some_ code at least.
Remove unreachable bb's from the list of bb's when we kill them.
CSE may have caused more unreachable bb's, so do a second
reachability pass after CSE.
Allow -vv as shorthand for "-v -v" aka "very verbose".
Expose "show_bb()" for debugging, and make it do more appropriate
white-space.
Small cleanups for example storage handling.

Next step: start generating x86-like code for simple
instructions.
Start splitting out generic "storage" handling from example.c

Start by renaming.
Make "storage" be part of the sparse library, and split out
the "example output" program from it.
Expose "show_instruction()" for debugging.

We already did this, we just didn't have a visible prototype.
Slowly, slowly, make the output of "example" slightly more readable.

I dunno if this will ever get anywhere.
[PATCH] missing dependency for storage.o

Add dependency on .h files for storage.o
Fix undefined symbol linearization case

Noted by Sam Ravnborg