Treat .a files as expected
Pull out GNU warnings and add -Wgnu
Add warning for GNU empty initialiser
Disable call-through-lvalue - safely call through reg for now

Although massively UB, this code demonstrated that:
a) the register offset (%rbp - 6) wasn't applied for the stack-entry call,
b) calling a value in memory should be lea'd into a reg, not call *-6(%rbp)

main()
{
	/* mov 3 eax, ret */
	unsigned char code[] = {
		0xb8,
		0x03,
		0x00,
		0x00,
		0x00,
		0xc3,
	};
	return ((int (*)())code)();
}
Change out/dbg.c release to straight out free-tree
Remove dynarray_free_rval()
Attempt to fix label emission/skipping with typed labels
Merge branch 'master' into feature/inline

This brings in memory fixes to do with dynarray_free()

Conflicts:
	src/cc1/cc1.c
Complete debug label emission - only have debug entry if emitted
tools/hex_highlight: Show the count for a hex value
Fix endlabel arguments to gen_block_decls()
Change responsibility of label retains in out/dbg.c
Merge branch 'master' into feature/inline

This brings in the debug-free-tree instead of retain/release logic,
and also the removal of dynarray_free_rval().

Conflicts:
	src/cc1/out/dbg.c
Function inlining holds onto the debug labels
Pending labels in octx holds onto the end debug label
Integrate the debug-label push/pop with block alloc/dealloc
Debug label emission also releases and nulls the block-debug-labels
Symtables (indirectly via push/pop) retain debug labels
Late extern inline function emission test
Arrays of const report true for type_is_const()

This enables us to put const arrays in rodata, and correctly determine
constness, since the array can't be rebased, so if its subtype is
const, it is const.