Fix errors in ARM build
Add missing nothrow @nogc to signal functions and callWithStackShell callback
PPC64: Fix mangled name of callWithStackShell
Fix a bug in the LLVM bswap builtin.

Also adds tests for the new builtins.
CMake: Remove unsupported, untested USE_BOHEM_GC option.

I don't think anyone ever tried to use it recently. Among other
problems, it expected "libgc.a" to be present in the source
direcotry.

In the unlikely case that somebody wants to experiment with the
Boehm GC again, the required flags are trivial to add via
CMAKE_CXX_FLAGS, etc.
Clean up linkage handling.

Since the change to the symbol emission strategy, a lot of the
previous attempts to derive the linkage for a symbol from its
AST node has been superfluous. This cleans up all the related
code, as it is really not doing much anymore.

The code to opportunistically internalize symbols is now gone
entirely. It was commented out anyway due to problems with
making it work reliably in the face of the not-so-stable
structure of the AST we get from the frontend (regarding the
modules certain symbols end up in). But in any case internal
linkage woudl also be troublesome for cross-module inlining,
so I gave up on making this work for the time being.

The only (minor) change in the emitted code should be in
.offTi generation, which is untested and disabled by default
anyway (GENERATE_OFFTI).
[cleanup] Remove LDC modifications from mostly unused front-end inliner.

The inliner is also used for default argument handling, so we
need to keep it around, but we no longer need any of the cost
tweaks. In fact, this could even fix some potential bugs with
erroneously accepted default arguments.

We will likely want to bring something like InlineCostVisitor
back for cross-module inlining, but with visitors we can do
this without editing the source now.
[cleanup] getenv_setargv is no longer used in LDC, reduce diff.
[cleanup] Some more alignment of whitespace to DMD.
Merge pull request #737 from klickverbot/random-cleanup

Random cleanup changes
Fix PPC32/64 ABI.

See http://llvm.org/bugs/show_bug.cgi?id=21087:
Static arrays were passed as e.g. [2 x i16]. The LLVM lowering uses a register for each entry,
extending it to 64bit. This is not the expected behaviour.
To work around this problem the PPC ABI now uses the byval-workaround from the Win64 ABI:
The struct/array is copied to some private memory and a pointer to this memory is passed to the function.
Structs/arrays of size 1/2/4/8 are cast to an integer and passed as integer.

This fixes all codegen crashes on Linux/PPC64le.
[cleanup] Removed unused struct stack from IRState.
Fixed getParentFunc(..., true) as used for nested context creation.

It seems like the original code contained two issues: First,
the stopOnStatic branch checked the passed symbol over and
over again instead of the current parent. Second, aggregate
declarations are not Declarations, they are ScopeDsymbols.

GitHub: Fixes #696.
Replace TAB with spaces.
Merge pull request #738 from klickverbot/nested-static

Fixed getParentFunc(..., true) as used for nested context creation.
[cleanup] Remove unused IrField::getDefaultInit.
[cleanup] Remove unused IrTypeAggr::default_fields and accessors.
[cleanup] Merge DtoIndex{Struct, Class}.
Track member field index in IrTypeAggr, not IrField.

This fixes a regression introduced in caa2f15c8a. The IrDsymbol
metadata is obviously reset in between modules, while IrTypes
are not. Thus, we can never set symbol metadata when resolving
types, as the symbol data will be wrong in all modules following
the one where the type was first resolved.

GitHub: Fixes #739.
Merge pull request #740 from klickverbot/field-index

Track member field index in IrTypeAggr, not IrField.