[asan] Fix x86-32 asm instrumentation to preserve flags.
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Wed, 21 May 2014 08:14:24 +0000 (08:14 +0000)
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Wed, 21 May 2014 08:14:24 +0000 (08:14 +0000)
Patch by Yuri Gorshenin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209280 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp

index 85c7bf00972640f9b049a90176cbfe477e373193..f3e6b3f4193b8d967f03a593d3c6077ecc39e884 100644 (file)
@@ -161,8 +161,7 @@ void X86AddressSanitizer32::InstrumentMemOperandImpl(
         MCSymbolRefExpr::Create(FuncSym, MCSymbolRefExpr::VK_PLT, Ctx);
     EmitInstruction(Out, MCInstBuilder(X86::CALLpcrel32).addExpr(FuncExpr));
   }
-  EmitInstruction(Out, MCInstBuilder(X86::ADD32ri).addReg(X86::ESP)
-                           .addReg(X86::ESP).addImm(4));
+  EmitInstruction(Out, MCInstBuilder(X86::POP32r).addReg(X86::EAX));
   EmitInstruction(Out, MCInstBuilder(X86::POP32r).addReg(X86::EAX));
 }