llvm-6502/test/Instrumentation
Anna Zaks f291e057a4 [asan] Don't run stack malloc on functions containing inline assembly.
It makes LLVM run out of registers even on 64-bit platforms. For example, the
following test case fails on darwin.

clang -cc1 -O0 -triple x86_64-apple-macosx10.10.0 -emit-obj -fsanitize=address -mstackrealign -o ~/tmp/ex.o -x c ex.c
error: inline assembly requires more registers than available

void TestInlineAssembly(const unsigned char *S, unsigned int pS, unsigned char *D, unsigned int pD, unsigned int h) {

unsigned int sr = 4, pDiffD = pD - 5;
unsigned int pDiffS = (pS << 1) - 5;
char flagSA = ((pS & 15) == 0),
flagDA = ((pD & 15) == 0);
asm volatile (
  "mov %0,  %%"PTR_REG("si")"\n"
  "mov %2,  %%"PTR_REG("cx")"\n"
  "mov %1,  %%"PTR_REG("di")"\n"
  "mov %8,  %%"PTR_REG("ax")"\n"
  :
  : "m" (S), "m" (D), "m" (pS), "m" (pDiffS), "m" (pDiffD), "m" (sr), "m" (flagSA), "m" (flagDA), "m" (h)
  : "%"PTR_REG("si"), "%"PTR_REG("di"), "%"PTR_REG("ax"), "%"PTR_REG("cx"), "%"PTR_REG("dx"), "memory"
);
}

http://reviews.llvm.org/D10719

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240722 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-25 23:35:45 +00:00
..
AddressSanitizer [asan] Don't run stack malloc on functions containing inline assembly. 2015-06-25 23:35:45 +00:00
BoundsChecking Add a bunch of CHECK missing colons in tests. NFC. 2015-03-14 01:43:57 +00:00
DataFlowSanitizer IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
InstrProfiling Final fix for PR 23499 and IR test case. 2015-05-27 19:34:01 +00:00
MemorySanitizer When checking msan.module_ctor, use CHECK-LABEL instead of CHECK 2015-05-07 21:47:25 +00:00
SanitizerCoverage IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
ThreadSanitizer Let llvm::ReplaceInstWithInst copy debug location from old to new instruction. 2015-06-23 21:00:08 +00:00