Merge pull request #3358 from 9rnsr/fix12220

Issue 12220 - hash.get() does not accept proper parameters
Correct issues found by AddressSanitizer.

The changes in this pull request fixes issues found by AddressSanitizer from LLVM 3.4.
Add version identifier for Nvidia Parallel Thread Execution (NVPTX).

This is another LLVM backend. Maybe it is possible to run D on graphic cards, too.
Merge pull request #3359 from redstar/nvptx

Add version identifier for Nvidia Parallel Thread Execution (NVPTX).
Merge pull request #2699 from redstar/asan

Correct issues found by AddressSanitizer.
[Refactoring] Add protectionToChars
[Refactoring] Use linkageToBuffer
[Refactoring] Move prototypes into hdrgen.h
Merge back semantic result in originalType
Use postfix style for function attributes

Issue XXXXX - Prefer postfix style for function attributes

Currently, dmd prints function attributes in front of the function
declaration, in some situations:
- Header generation (-H)
- Ddoc generation (-D)
- stringof property, pragma(msg), etc

But, actually, there are some issues with the prefix style. For example:

1. foo1 is impossible, but foo2 is possible:
 void foo1(pure int delegate() dg) {}
 void foo2(int delegate() pure dg) {}

2. foo1 and foo2 are different signature:
 void foo1(const int delegate() dg1) {}
 void foo2(int delegate() const dg2) {}
For the type of dg2, prefix style is not possible.

3. Some member function attributes would be looked like ambiguous:
 const int foo() {}     // const(int) foo(), or int foo() const?
 immutable int foo() {} // ditto
 int foo() const {}     // no ambiguity

4. Printing function pointer or delegate types will be done by postfix style:
 alias pure void function() FP;
 alias pure void delegate() DG;
 pragma(msg, FP);	// void function() pure
 pragma(msg, DG);	// void delegate() pure

Therefore, compiler should prefer the postfix style as its output.

 /// document
 pure void foo() { ... }
 pragma(msg, typeof(foo));	// void() pure
 pragma(msg, typeof(&foo));	// void function() pure

Ddoc output:
 void foo() pure
     document

Header generation:
 void foo() pure;
[Refactoring] trustToBuffer
fix Issue 12266 - Regression (2.065): Header generation produces uncompilable header
unlisted bug fix 1
[Refactoring] Remove HdrGenState::autoMember
Tweak header-gen result