Amend MS offset operator implementation, to more closely fit with its MS counterpart:
- InlineAsm: evaluate non-local source entities to their (address) location
- Provide a mean with which one may acquire the address of an assembly label via MS syntax, rather than yielding a memory reference (i.e. "offset asm_label" and "$asm_label" should be synonymous
- address PR32530
Based on http://llvm.org/D37461
Fix broken test where the break appears unrelated.
- Set up appropriate memory-input rewrites for variable references.
- Intel-dialect assembly printing now correctly handles addresses by adding "offset".
- Pass offsets as immediate operands (using "r" constraint for offsets of locals).
- __asm mov qword ptr [eax], offset var -// CHECK: t2 -// CHECK: call void asm sideeffect inteldialect -// CHECK-SAME: mov qword ptr [eax], $0 -// CHECK-SAME: "r,~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}}) + __asm mov qword ptr[eax], offset var + // CHECK: t2 + // CHECK: call void asm sideeffect inteldialect + // CHECK-SAME: mov qword ptr [eax], $0 + // CHECK-SAME: "r,~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})