Detect android liblog and use android's log functions for debug output
Remove declarations for deleted functions from orcutils.h
Add fallback CPU feature detection for Android

On Android, /proc/self/auxv might not be readable (except
when debuggable=true in the build, annoyingly), so do what
the android cpufeatures detection code does and fall back to
/proc/cpuinfo string matching.

Without this, release builds run really slowly, due to ORC always
doing emulation.
Release 0.4.22
Back to development
TMPDIR becomes the last option

Previously $TMPDIR and /tmp were the first options to try to use for
intermediate files. To prevent name collisions, now user specific dirs ($HOME
and $XDG_RUNTIME_DIR) are prefered over the user unspecific dirs ($TMP and
/tmp).

https://bugzilla.gnome.org/show_bug.cgi?id=735871
docs: remove old env variable

ORC_CPU_FLAGS has been removed quite some time ago
utils: convert to uin32 before doing |

In ORC_READ_UINT32_LE, convert each byte to uint32 before or-ing them
together. This avoids | with signed ints.
compiler: avoid nagative array index

For instructions that don't have a second variable, don't try to index
the variable array with a -1 index.
compiler: do << and | on unsigned ints only
opcodes: avoid undefined operations on signed ints

Cast to unsigned int when doing addition and subtraction that can
overflow.
Cast to unsigned int when doing the lower part of a multiplication.
Cast to unsigned int when doing left shifts into the sign bit.
Regenerate the emulation code. This should avoid multiple warnings
reported with clang and -fsanitize=undefined.

See https://bugzilla.gnome.org/show_bug.cgi?id=728738
compiler: reuse _try_get_constant in _get_constant
compiler: generate only 1 temp for constants

Generate only 1 temp variable for constants. We do this by keeping track
of what variable we used to replace the constant.

Previously, orc would allocate a new temp variable every time a constant
was used, this wastes registers and is not needed.
program-c: handle X2 and X4 with size < 2 variables

when the variable has a size < 2 it will have been declared as a simple
int8 or int16, when we use this in a X2 or X4 instruction, use the
variable directly instead of trying to use the x fields.
parse: register constants with the right size

When we detect a constant while parsing a line, register it with the
same size as the argument of the opcode.
executor: fully expand const vars into the temp register

When loading a const in a register, always make it cover the full
register so that it containts enough values to be used in x2 and
x4 instructions.
executor: use the size of the opcode arg to get multiplier

When loading a constant, select the multiplier based on the size of the
opcode argument. This is safer because we have existing code that declares
the constants of the wrong size.
parse: fix opcode arg size
parse: make contants per size

When we automatically create constants from the opcode arguments, make
different constants per size and rewrite the program to use the newly
created constant.
Revert reuse constants

This reverts commit 2ece711c615d327be1e74bec4844186ced58b0ef.
This reverts commit 2ae41b98a35405dbfd35209e7d68428be77a2e62.
This reverts commit 106dacc2620126dedb99d2b981ba2e5a7d4591f9.
This reverts commit f6697e30681f46f6f3f632ddbbcab98107eec7e0.

These commits are more complicated than needed. A more simple solution
is possible by tracking the registers that hold a certain constant and
simply reusing that register when we can. We can then load the same
constant in different registers of different sizes if needed.