Index: include/llvm/CodeGen/AsmPrinter.h =================================================================== RCS file: /home/cvsuser/cvsroot/c16/include/llvm/CodeGen/AsmPrinter.h,v retrieving revision 1.10 diff -u -3 -p -w -r1.10 AsmPrinter.h --- include/llvm/CodeGen/AsmPrinter.h 21 Jan 2009 18:21:43 -0000 1.10 +++ include/llvm/CodeGen/AsmPrinter.h 28 Jan 2009 07:07:21 -0000 @@ -309,7 +309,7 @@ namespace llvm { protected: /// EmitZeros - Emit a block of zeros. /// - void EmitZeros(uint64_t NumZeros) const; + void EmitZeros(uint64_t NumZeros, unsigned AddrSpace = 0) const; /// EmitString - Emit a zero-byte-terminated string constant. /// @@ -317,10 +317,10 @@ namespace llvm { /// EmitConstantValueOnly - Print out the specified constant, without a /// storage class. Only constants of first-class type are allowed here. - virtual void EmitConstantValueOnly(const Constant *CV); + void EmitConstantValueOnly(const Constant *CV); /// EmitGlobalConstant - Print a general LLVM constant to the .s file. - void EmitGlobalConstant(const Constant* CV); + void EmitGlobalConstant(const Constant* CV, unsigned AddrSpace = 0); virtual void EmitMachineConstantPoolValue(MachineConstantPoolValue *MCPV); @@ -351,7 +351,7 @@ namespace llvm { /// printDataDirective - This method prints the asm directive for the /// specified type. - void printDataDirective(const Type *type); + void printDataDirective(const Type *type, unsigned AddrSpace = 0); /// printSuffixedName - This prints a name with preceding /// getPrivateGlobalPrefix and the specified suffix, handling quoted names @@ -371,11 +371,12 @@ namespace llvm { const GlobalValue *findGlobalValue(const Constant* CV); void EmitLLVMUsedList(Constant *List); void EmitXXStructorList(Constant *List); - void EmitGlobalConstantStruct(const ConstantStruct* CVS); + void EmitGlobalConstantStruct(const ConstantStruct* CVS, + unsigned AddrSpace); void EmitGlobalConstantArray(const ConstantArray* CVA); void EmitGlobalConstantVector(const ConstantVector* CP); - void EmitGlobalConstantFP(const ConstantFP* CFP); - void EmitGlobalConstantLargeInt(const ConstantInt* CI); + void EmitGlobalConstantFP(const ConstantFP* CFP, unsigned AddrSpace); + void EmitGlobalConstantLargeInt(const ConstantInt* CI, unsigned AddrSpace); GCMetadataPrinter *GetOrCreateGCPrinter(GCStrategy *C); }; } Index: include/llvm/Target/TargetAsmInfo.h =================================================================== RCS file: /home/cvsuser/cvsroot/c16/include/llvm/Target/TargetAsmInfo.h,v retrieving revision 1.8 diff -u -3 -p -w -r1.8 TargetAsmInfo.h --- include/llvm/Target/TargetAsmInfo.h 27 Jan 2009 01:06:54 -0000 1.8 +++ include/llvm/Target/TargetAsmInfo.h 28 Jan 2009 07:07:21 -0000 @@ -598,6 +598,21 @@ namespace llvm { static unsigned getULEB128Size(unsigned Value); + // Data directive accessors + // + virtual const char *getData8bitsDirective(unsigned AddrSpace = 0) const { + return Data8bitsDirective; + } + virtual const char *getData16bitsDirective(unsigned AddrSpace = 0) const { + return Data16bitsDirective; + } + virtual const char *getData32bitsDirective(unsigned AddrSpace = 0) const { + return Data32bitsDirective; + } + virtual const char *getData64bitsDirective(unsigned AddrSpace = 0) const { + return Data64bitsDirective; + } + // Accessors. // const Section *getTextSection() const { @@ -710,18 +725,6 @@ namespace llvm { } const char *getAscizDirective() const { return AscizDirective; - } - const char *getData8bitsDirective() const { - return Data8bitsDirective; - } - const char *getData16bitsDirective() const { - return Data16bitsDirective; - } - const char *getData32bitsDirective() const { - return Data32bitsDirective; - } - const char *getData64bitsDirective() const { - return Data64bitsDirective; } const char *getJumpTableDirective() const { return JumpTableDirective; Index: lib/CodeGen/AsmPrinter/AsmPrinter.cpp =================================================================== RCS file: /home/cvsuser/cvsroot/c16/lib/CodeGen/AsmPrinter/AsmPrinter.cpp,v retrieving revision 1.10 diff -u -3 -p -w -r1.10 AsmPrinter.cpp --- lib/CodeGen/AsmPrinter/AsmPrinter.cpp 23 Jan 2009 05:18:22 -0000 1.10 +++ lib/CodeGen/AsmPrinter/AsmPrinter.cpp 28 Jan 2009 07:07:21 -0000 @@ -770,7 +770,7 @@ void AsmPrinter::EmitAlignment(unsigned /// EmitZeros - Emit a block of zeros. /// -void AsmPrinter::EmitZeros(uint64_t NumZeros) const { +void AsmPrinter::EmitZeros(uint64_t NumZeros, unsigned AddrSpace) const { if (NumZeros) { if (TAI->getZeroDirective()) { O << TAI->getZeroDirective() << NumZeros; @@ -779,7 +779,7 @@ void AsmPrinter::EmitZeros(uint64_t NumZ O << '\n'; } else { for (; NumZeros; --NumZeros) - O << TAI->getData8bitsDirective() << "0\n"; + O << TAI->getData8bitsDirective(AddrSpace) << "0\n"; } } } @@ -956,7 +956,8 @@ void AsmPrinter::EmitGlobalConstantVecto EmitGlobalConstant(CP->getOperand(I)); } -void AsmPrinter::EmitGlobalConstantStruct(const ConstantStruct *CVS) { +void AsmPrinter::EmitGlobalConstantStruct(const ConstantStruct *CVS, + unsigned AddrSpace) { // Print the fields in successive locations. Pad to align if needed! const TargetData *TD = TM.getTargetData(); unsigned Size = TD->getTypePaddedSize(CVS->getType()); @@ -972,46 +973,47 @@ void AsmPrinter::EmitGlobalConstantStruc sizeSoFar += fieldSize + padSize; // Now print the actual field value. - EmitGlobalConstant(field); + EmitGlobalConstant(field, AddrSpace); // Insert padding - this may include padding to increase the size of the // current field up to the ABI size (if the struct is not packed) as well // as padding to ensure that the next field starts at the right offset. - EmitZeros(padSize); + EmitZeros(padSize, AddrSpace); } assert(sizeSoFar == cvsLayout->getSizeInBytes() && "Layout of constant struct may be incorrect!"); } -void AsmPrinter::EmitGlobalConstantFP(const ConstantFP *CFP) { +void AsmPrinter::EmitGlobalConstantFP(const ConstantFP *CFP, + unsigned AddrSpace) { // FP Constants are printed as integer constants to avoid losing // precision... const TargetData *TD = TM.getTargetData(); if (CFP->getType() == Type::DoubleTy) { double Val = CFP->getValueAPF().convertToDouble(); // for comment only uint64_t i = CFP->getValueAPF().bitcastToAPInt().getZExtValue(); - if (TAI->getData64bitsDirective()) - O << TAI->getData64bitsDirective() << i << '\t' + if (TAI->getData64bitsDirective(AddrSpace)) + O << TAI->getData64bitsDirective(AddrSpace) << i << '\t' << TAI->getCommentString() << " double value: " << Val << '\n'; else if (TD->isBigEndian()) { - O << TAI->getData32bitsDirective() << unsigned(i >> 32) + O << TAI->getData32bitsDirective(AddrSpace) << unsigned(i >> 32) << '\t' << TAI->getCommentString() << " double most significant word " << Val << '\n'; - O << TAI->getData32bitsDirective() << unsigned(i) + O << TAI->getData32bitsDirective(AddrSpace) << unsigned(i) << '\t' << TAI->getCommentString() << " double least significant word " << Val << '\n'; } else { - O << TAI->getData32bitsDirective() << unsigned(i) + O << TAI->getData32bitsDirective(AddrSpace) << unsigned(i) << '\t' << TAI->getCommentString() << " double least significant word " << Val << '\n'; - O << TAI->getData32bitsDirective() << unsigned(i >> 32) + O << TAI->getData32bitsDirective(AddrSpace) << unsigned(i >> 32) << '\t' << TAI->getCommentString() << " double most significant word " << Val << '\n'; } return; } else if (CFP->getType() == Type::FloatTy) { float Val = CFP->getValueAPF().convertToFloat(); // for comment only - O << TAI->getData32bitsDirective() + O << TAI->getData32bitsDirective(AddrSpace) << CFP->getValueAPF().bitcastToAPInt().getZExtValue() << '\t' << TAI->getCommentString() << " float " << Val << '\n'; return; @@ -1026,42 +1028,42 @@ void AsmPrinter::EmitGlobalConstantFP(co DoubleVal.convert(APFloat::IEEEdouble, APFloat::rmNearestTiesToEven, &ignored); if (TD->isBigEndian()) { - O << TAI->getData16bitsDirective() << uint16_t(p[0] >> 48) + O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 48) << '\t' << TAI->getCommentString() << " long double most significant halfword of ~" << DoubleVal.convertToDouble() << '\n'; - O << TAI->getData16bitsDirective() << uint16_t(p[0] >> 32) + O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 32) << '\t' << TAI->getCommentString() << " long double next halfword\n"; - O << TAI->getData16bitsDirective() << uint16_t(p[0] >> 16) + O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 16) << '\t' << TAI->getCommentString() << " long double next halfword\n"; - O << TAI->getData16bitsDirective() << uint16_t(p[0]) + O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0]) << '\t' << TAI->getCommentString() << " long double next halfword\n"; - O << TAI->getData16bitsDirective() << uint16_t(p[1]) + O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[1]) << '\t' << TAI->getCommentString() << " long double least significant halfword\n"; } else { - O << TAI->getData16bitsDirective() << uint16_t(p[1]) + O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[1]) << '\t' << TAI->getCommentString() << " long double least significant halfword of ~" << DoubleVal.convertToDouble() << '\n'; - O << TAI->getData16bitsDirective() << uint16_t(p[0]) + O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0]) << '\t' << TAI->getCommentString() << " long double next halfword\n"; - O << TAI->getData16bitsDirective() << uint16_t(p[0] >> 16) + O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 16) << '\t' << TAI->getCommentString() << " long double next halfword\n"; - O << TAI->getData16bitsDirective() << uint16_t(p[0] >> 32) + O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 32) << '\t' << TAI->getCommentString() << " long double next halfword\n"; - O << TAI->getData16bitsDirective() << uint16_t(p[0] >> 48) + O << TAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 48) << '\t' << TAI->getCommentString() << " long double most significant halfword\n"; } EmitZeros(TD->getTypePaddedSize(Type::X86_FP80Ty) - - TD->getTypeStoreSize(Type::X86_FP80Ty)); + TD->getTypeStoreSize(Type::X86_FP80Ty), AddrSpace); return; } else if (CFP->getType() == Type::PPC_FP128Ty) { // all long double variants are printed as hex @@ -1069,29 +1071,29 @@ void AsmPrinter::EmitGlobalConstantFP(co APInt api = CFP->getValueAPF().bitcastToAPInt(); const uint64_t *p = api.getRawData(); if (TD->isBigEndian()) { - O << TAI->getData32bitsDirective() << uint32_t(p[0] >> 32) + O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0] >> 32) << '\t' << TAI->getCommentString() << " long double most significant word\n"; - O << TAI->getData32bitsDirective() << uint32_t(p[0]) + O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0]) << '\t' << TAI->getCommentString() << " long double next word\n"; - O << TAI->getData32bitsDirective() << uint32_t(p[1] >> 32) + O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1] >> 32) << '\t' << TAI->getCommentString() << " long double next word\n"; - O << TAI->getData32bitsDirective() << uint32_t(p[1]) + O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1]) << '\t' << TAI->getCommentString() << " long double least significant word\n"; } else { - O << TAI->getData32bitsDirective() << uint32_t(p[1]) + O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1]) << '\t' << TAI->getCommentString() << " long double least significant word\n"; - O << TAI->getData32bitsDirective() << uint32_t(p[1] >> 32) + O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[1] >> 32) << '\t' << TAI->getCommentString() << " long double next word\n"; - O << TAI->getData32bitsDirective() << uint32_t(p[0]) + O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0]) << '\t' << TAI->getCommentString() << " long double next word\n"; - O << TAI->getData32bitsDirective() << uint32_t(p[0] >> 32) + O << TAI->getData32bitsDirective(AddrSpace) << uint32_t(p[0] >> 32) << '\t' << TAI->getCommentString() << " long double most significant word\n"; } @@ -1099,7 +1101,8 @@ void AsmPrinter::EmitGlobalConstantFP(co } else assert(0 && "Floating point constant type not handled"); } -void AsmPrinter::EmitGlobalConstantLargeInt(const ConstantInt *CI) { +void AsmPrinter::EmitGlobalConstantLargeInt(const ConstantInt *CI, + unsigned AddrSpace) { const TargetData *TD = TM.getTargetData(); unsigned BitWidth = CI->getBitWidth(); assert(isPowerOf2_32(BitWidth) && @@ -1116,20 +1119,20 @@ void AsmPrinter::EmitGlobalConstantLarge else Val = RawData[i]; - if (TAI->getData64bitsDirective()) - O << TAI->getData64bitsDirective() << Val << '\n'; + if (TAI->getData64bitsDirective(AddrSpace)) + O << TAI->getData64bitsDirective(AddrSpace) << Val << '\n'; else if (TD->isBigEndian()) { - O << TAI->getData32bitsDirective() << unsigned(Val >> 32) + O << TAI->getData32bitsDirective(AddrSpace) << unsigned(Val >> 32) << '\t' << TAI->getCommentString() << " Double-word most significant word " << Val << '\n'; - O << TAI->getData32bitsDirective() << unsigned(Val) + O << TAI->getData32bitsDirective(AddrSpace) << unsigned(Val) << '\t' << TAI->getCommentString() << " Double-word least significant word " << Val << '\n'; } else { - O << TAI->getData32bitsDirective() << unsigned(Val) + O << TAI->getData32bitsDirective(AddrSpace) << unsigned(Val) << '\t' << TAI->getCommentString() << " Double-word least significant word " << Val << '\n'; - O << TAI->getData32bitsDirective() << unsigned(Val >> 32) + O << TAI->getData32bitsDirective(AddrSpace) << unsigned(Val >> 32) << '\t' << TAI->getCommentString() << " Double-word most significant word " << Val << '\n'; } @@ -1137,27 +1140,27 @@ void AsmPrinter::EmitGlobalConstantLarge } /// EmitGlobalConstant - Print a general LLVM constant to the .s file. -void AsmPrinter::EmitGlobalConstant(const Constant *CV) { +void AsmPrinter::EmitGlobalConstant(const Constant *CV, unsigned AddrSpace) { const TargetData *TD = TM.getTargetData(); const Type *type = CV->getType(); unsigned Size = TD->getTypePaddedSize(type); if (CV->isNullValue() || isa(CV)) { - EmitZeros(Size); + EmitZeros(Size, AddrSpace); return; } else if (const ConstantArray *CVA = dyn_cast(CV)) { EmitGlobalConstantArray(CVA); return; } else if (const ConstantStruct *CVS = dyn_cast(CV)) { - EmitGlobalConstantStruct(CVS); + EmitGlobalConstantStruct(CVS, AddrSpace); return; } else if (const ConstantFP *CFP = dyn_cast(CV)) { - EmitGlobalConstantFP(CFP); + EmitGlobalConstantFP(CFP, AddrSpace); return; } else if (const ConstantInt *CI = dyn_cast(CV)) { // Small integers are handled below; large integers are handled here. if (Size > 4) { - EmitGlobalConstantLargeInt(CI); + EmitGlobalConstantLargeInt(CI, AddrSpace); return; } } else if (const ConstantVector *CP = dyn_cast(CV)) { @@ -1165,7 +1168,7 @@ void AsmPrinter::EmitGlobalConstant(cons return; } - printDataDirective(type); + printDataDirective(type, AddrSpace); EmitConstantValueOnly(CV); if (const ConstantInt *CI = dyn_cast(CV)) { SmallString<40> S; @@ -1491,21 +1494,21 @@ void AsmPrinter::printPICJumpTableSetLab /// printDataDirective - This method prints the asm directive for the /// specified type. -void AsmPrinter::printDataDirective(const Type *type) { +void AsmPrinter::printDataDirective(const Type *type, unsigned AddrSpace) { const TargetData *TD = TM.getTargetData(); switch (type->getTypeID()) { case Type::IntegerTyID: { unsigned BitWidth = cast(type)->getBitWidth(); if (BitWidth <= 8) - O << TAI->getData8bitsDirective(); + O << TAI->getData8bitsDirective(AddrSpace); else if (BitWidth <= 16) - O << TAI->getData16bitsDirective(); + O << TAI->getData16bitsDirective(AddrSpace); else if (BitWidth <= 32) - O << TAI->getData32bitsDirective(); + O << TAI->getData32bitsDirective(AddrSpace); else if (BitWidth <= 64) { - assert(TAI->getData64bitsDirective() && + assert(TAI->getData64bitsDirective(AddrSpace) && "Target cannot handle 64-bit constant exprs!"); - O << TAI->getData64bitsDirective(); + O << TAI->getData64bitsDirective(AddrSpace); } else { assert(0 && "Target cannot handle given data directive width!"); } @@ -1513,15 +1516,15 @@ void AsmPrinter::printDataDirective(cons } case Type::PointerTyID: if (TD->getPointerSize() == 8) { - assert(TAI->getData64bitsDirective() && + assert(TAI->getData64bitsDirective(AddrSpace) && "Target cannot handle 64-bit pointer exprs!"); - O << TAI->getData64bitsDirective(); + O << TAI->getData64bitsDirective(AddrSpace); } else if (TD->getPointerSize() == 2) { - O << TAI->getData16bitsDirective(); + O << TAI->getData16bitsDirective(AddrSpace); } else if (TD->getPointerSize() == 1) { - O << TAI->getData8bitsDirective(); + O << TAI->getData8bitsDirective(AddrSpace); } else { - O << TAI->getData32bitsDirective(); + O << TAI->getData32bitsDirective(AddrSpace); } break; case Type::FloatTyID: case Type::DoubleTyID: Index: lib/Target/PIC16/PIC16AsmPrinter.cpp =================================================================== RCS file: /home/cvsuser/cvsroot/c16/lib/Target/PIC16/PIC16AsmPrinter.cpp,v retrieving revision 1.47 diff -u -3 -p -w -r1.47 PIC16AsmPrinter.cpp --- lib/Target/PIC16/PIC16AsmPrinter.cpp 15 Jan 2009 03:44:08 -0000 1.47 +++ lib/Target/PIC16/PIC16AsmPrinter.cpp 28 Jan 2009 07:07:21 -0000 @@ -242,48 +242,11 @@ void PIC16AsmPrinter::EmitInitData (Modu continue; O << name; - EmitGlobalConstant(C); + EmitGlobalConstant(C, AddrSpace); } } } -void PIC16AsmPrinter::EmitConstantValueOnly(const Constant* CV) { - if (const ConstantInt *CI = dyn_cast(CV)) { - unsigned BitWidth = CI->getBitWidth(); - int Val = CI->getZExtValue(); - if (BitWidth == 8) { - // Expecting db directive here. In case of romdata we need to pad the - // word with zeros. - if (IsRomData) - O << 0 <<", "; - O << Val; - } - else if (BitWidth == 16) { - unsigned Element1, Element2; - Element1 = 0x00ff & Val; - Element2 = 0x00ff & (Val >> 8); - if (IsRomData) - O << 0 <<", "<> 8); - Element3 = 0x00ff & (Val >> 16); - Element4 = 0x00ff & (Val >> 24); - if (IsRomData) - O << 0 <<", "<< Element1 <<", "<< 0 <<", "<< Element2 <<", "<< 0 - <<", "<< Element3 <<", "<< 0 <<", "<< Element4; - else - O << Element1 <<", "<< Element2 <<", "<< Element3 <<", "<< Element4; - } - return; - } - AsmPrinter::EmitConstantValueOnly(CV); -} - void PIC16AsmPrinter::EmitRomData (Module &M) { SwitchToSection(TAI->getReadOnlySection()); @@ -308,7 +271,7 @@ void PIC16AsmPrinter::EmitRomData (Modul continue; O << name; - EmitGlobalConstant(C); + EmitGlobalConstant(C, AddrSpace); O << "\n"; } } Index: lib/Target/PIC16/PIC16AsmPrinter.h =================================================================== RCS file: /home/cvsuser/cvsroot/c16/lib/Target/PIC16/PIC16AsmPrinter.h,v retrieving revision 1.12 diff -u -3 -p -w -r1.12 PIC16AsmPrinter.h --- lib/Target/PIC16/PIC16AsmPrinter.h 17 Dec 2008 21:08:45 -0000 1.12 +++ lib/Target/PIC16/PIC16AsmPrinter.h 28 Jan 2009 07:07:21 -0000 @@ -43,7 +43,6 @@ namespace llvm { void EmitInitData (Module &M); void EmitUnInitData (Module &M); void EmitRomData (Module &M); - virtual void EmitConstantValueOnly(const Constant *CV); void emitFunctionData(MachineFunction &MF); void emitFunctionTempData(MachineFunction &MF, unsigned &FrameSize); Index: lib/Target/PIC16/PIC16TargetAsmInfo.cpp =================================================================== RCS file: /home/cvsuser/cvsroot/c16/lib/Target/PIC16/PIC16TargetAsmInfo.cpp,v retrieving revision 1.7 diff -u -3 -p -w -r1.7 PIC16TargetAsmInfo.cpp --- lib/Target/PIC16/PIC16TargetAsmInfo.cpp 23 Dec 2008 09:24:44 -0000 1.7 +++ lib/Target/PIC16/PIC16TargetAsmInfo.cpp 28 Jan 2009 07:07:21 -0000 @@ -22,8 +22,11 @@ PIC16TargetAsmInfo(const PIC16TargetMach : TargetAsmInfo(TM) { CommentString = ";"; Data8bitsDirective = " db "; - Data16bitsDirective = " db "; - Data32bitsDirective = " db "; + Data16bitsDirective = " dw "; + Data32bitsDirective = " dl "; + RomData8bitsDirective = " dw "; + RomData16bitsDirective = " rom_di "; + RomData8bitsDirective = " rom_dl "; ZeroDirective = NULL; AsciiDirective = " dt "; AscizDirective = NULL; @@ -33,3 +36,28 @@ PIC16TargetAsmInfo(const PIC16TargetMach DataSection = getNamedSection("idata.# IDATA", SectionFlags::Writeable); SwitchToSectionDirective = ""; } + +const char *PIC16TargetAsmInfo::getData8bitsDirective(unsigned AddrSpace) + const { + if (AddrSpace == PIC16ISD::ROM_SPACE) + return RomData8bitsDirective; + else + return Data8bitsDirective; + } + +const char *PIC16TargetAsmInfo::getData16bitsDirective(unsigned AddrSpace) + const { + if (AddrSpace == PIC16ISD::ROM_SPACE) + return RomData16bitsDirective; + else + return Data16bitsDirective; + } + +const char *PIC16TargetAsmInfo::getData32bitsDirective(unsigned AddrSpace) + const { + if (AddrSpace == PIC16ISD::ROM_SPACE) + return RomData32bitsDirective; + else + return Data32bitsDirective; + } + Index: lib/Target/PIC16/PIC16TargetAsmInfo.h =================================================================== RCS file: /home/cvsuser/cvsroot/c16/lib/Target/PIC16/PIC16TargetAsmInfo.h,v retrieving revision 1.3 diff -u -3 -p -w -r1.3 PIC16TargetAsmInfo.h --- lib/Target/PIC16/PIC16TargetAsmInfo.h 15 Dec 2008 04:21:17 -0000 1.3 +++ lib/Target/PIC16/PIC16TargetAsmInfo.h 28 Jan 2009 07:07:21 -0000 @@ -23,7 +23,13 @@ namespace llvm { struct PIC16TargetAsmInfo : public TargetAsmInfo { PIC16TargetAsmInfo(const PIC16TargetMachine &TM); + const char *RomData8bitsDirective; + const char *RomData16bitsDirective; + const char *RomData32bitsDirective; public : + virtual const char *getData8bitsDirective(unsigned AddrSpace = 0) const; + virtual const char *getData16bitsDirective(unsigned AddrSpace = 0) const; + virtual const char *getData32bitsDirective(unsigned AddrSpace = 0) const; }; } // namespace llvm Index: test/Bindings/Ocaml/executionengine.cmo =================================================================== RCS file: /home/cvsuser/cvsroot/c16/test/Bindings/Ocaml/executionengine.cmo,v retrieving revision 1.1 diff -u -3 -p -w -r1.1 executionengine.cmo Binary files /tmp/cvs4FNuna and executionengine.cmo differ