On 10.08.2012, at 00:26, David Blaikie <[email protected]> wrote: > This appears to have broken the CMake build (introducing a dependency > on LLVM MC from Clang Sema) - at a glance I haven't found where to > insert the necessary CMake machinery to represent this & I have to run > now, but perhaps you/someone else will find it before I get a chance.
r161629 should fix this. - Ben > > On Thu, Aug 9, 2012 at 1:47 PM, Chad Rosier <[email protected]> wrote: >> Author: mcrosier >> Date: Thu Aug 9 15:47:38 2012 >> New Revision: 161614 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=161614&view=rev >> Log: >> [ms-inline asm] Instantiate the various parts to the AsmParser. >> >> Modified: >> cfe/trunk/lib/Sema/SemaStmt.cpp >> >> Modified: cfe/trunk/lib/Sema/SemaStmt.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=161614&r1=161613&r2=161614&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Sema/SemaStmt.cpp (original) >> +++ cfe/trunk/lib/Sema/SemaStmt.cpp Thu Aug 9 15:47:38 2012 >> @@ -32,6 +32,17 @@ >> #include "llvm/ADT/SmallPtrSet.h" >> #include "llvm/ADT/SmallString.h" >> #include "llvm/ADT/SmallVector.h" >> +#include "llvm/ADT/Triple.h" >> +#include "llvm/MC/MCAsmInfo.h" >> +#include "llvm/MC/MCContext.h" >> +#include "llvm/MC/MCObjectFileInfo.h" >> +#include "llvm/MC/MCRegisterInfo.h" >> +#include "llvm/MC/MCStreamer.h" >> +#include "llvm/MC/MCSubtargetInfo.h" >> +#include "llvm/MC/MCTargetAsmParser.h" >> +#include "llvm/MC/MCParser/MCAsmParser.h" >> +#include "llvm/Support/SourceMgr.h" >> +#include "llvm/Support/TargetRegistry.h" >> #include "llvm/Support/TargetSelect.h" >> using namespace clang; >> using namespace sema; >> @@ -2884,15 +2895,40 @@ >> std::string PatchedAsmString = >> PatchMSAsmString(*this, IsSimple, AsmLoc, AsmToks, >> Context.getTargetInfo()); >> >> - // Silence compiler warnings. Eventually, the PatchedAsmString will be >> - // passed to the AsmParser. >> - (void)PatchedAsmString; >> - >> // Initialize targets and assembly printers/parsers. >> llvm::InitializeAllTargetInfos(); >> llvm::InitializeAllTargetMCs(); >> llvm::InitializeAllAsmParsers(); >> >> + // Get the target specific parser. >> + std::string Error; >> + const std::string &TT = Context.getTargetInfo().getTriple().getTriple(); >> + const llvm::Target *TheTarget(llvm::TargetRegistry::lookupTarget(TT, >> Error)); >> + >> + llvm::SourceMgr SrcMgr; >> + llvm::MemoryBuffer *Buffer = >> + llvm::MemoryBuffer::getMemBuffer(PatchedAsmString, "<inline asm>"); >> + >> + // Tell SrcMgr about this buffer, which is what the parser will pick up. >> + SrcMgr.AddNewSourceBuffer(Buffer, llvm::SMLoc()); >> + >> + OwningPtr<llvm::MCAsmInfo> MAI(TheTarget->createMCAsmInfo(TT)); >> + OwningPtr<llvm::MCRegisterInfo> MRI(TheTarget->createMCRegInfo(TT)); >> + OwningPtr<llvm::MCObjectFileInfo> MOFI(new llvm::MCObjectFileInfo()); >> + llvm::MCContext Ctx(*MAI, *MRI, MOFI.get(), &SrcMgr); >> + OwningPtr<llvm::MCSubtargetInfo> >> + STI(TheTarget->createMCSubtargetInfo(TT, "", "")); >> + >> + OwningPtr<llvm::MCStreamer> Str; >> + OwningPtr<llvm::MCAsmParser> >> + Parser(createMCAsmParser(SrcMgr, Ctx, *Str.get(), *MAI)); >> + OwningPtr<llvm::MCTargetAsmParser> >> + TargetParser(TheTarget->createMCAsmParser(*STI, *Parser)); >> + >> + // Change to the Intel syntax. >> + Parser->setAssemblerDialect(1); >> + Parser->setTargetParser(*TargetParser.get()); >> + >> MSAsmStmt *NS = >> new (Context) MSAsmStmt(Context, AsmLoc, IsSimple, /* IsVolatile */ true, >> AsmToks, LineEnds, AsmString, EndLoc); >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
