diff --git a/llvm/lib/Target/AVR/AVRAsmPrinter.cpp b/llvm/lib/Target/AVR/AVRAsmPrinter.cpp --- a/llvm/lib/Target/AVR/AVRAsmPrinter.cpp +++ b/llvm/lib/Target/AVR/AVRAsmPrinter.cpp @@ -252,7 +252,7 @@ auto *Section = cast(TLOF.SectionForGlobal(&GO, TM)); if (Section->getName().startswith(".data")) NeedsCopyData = true; - else if (Section->getName().startswith(".rodata") && SubTM->hasPROGMEM()) + else if (Section->getName().startswith(".rodata") && SubTM->hasLPM()) // AVRs that have a separate PROGMEM (that's most AVRs) store .rodata // sections in RAM. NeedsCopyData = true; diff --git a/llvm/lib/Target/AVR/AVRDevices.td b/llvm/lib/Target/AVR/AVRDevices.td --- a/llvm/lib/Target/AVR/AVRDevices.td +++ b/llvm/lib/Target/AVR/AVRDevices.td @@ -65,11 +65,6 @@ "The device supports the 16-bit MOVW " "instruction">; -// The device has a separate flash namespace that must be accessed using special -// instructions like lpm. -def FeaturePROGMEM : SubtargetFeature<"progmem", "m_hasPROGMEM", "true", - "The device has a separate flash namespace">; - // The device supports the `LPM` instruction, with implied destination being r0. def FeatureLPM : SubtargetFeature<"lpm", "m_hasLPM", "true", "The device supports the `LPM` instruction">; @@ -161,7 +156,7 @@ // device should have. def FamilyAVR0 : Family<"avr0", []>; -def FamilyAVR1 : Family<"avr1", [FamilyAVR0, FeatureLPM, FeaturePROGMEM, FeatureMMR]>; +def FamilyAVR1 : Family<"avr1", [FamilyAVR0, FeatureLPM, FeatureMMR]>; def FamilyAVR2 : Family<"avr2", @@ -197,13 +192,13 @@ FeatureSmallStack]>; def FamilyXMEGA3 : Family<"xmega3", - [FamilyAVR0, FeatureLPM, FeaturePROGMEM, FeatureIJMPCALL, + [FamilyAVR0, FeatureLPM, FeatureIJMPCALL, FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL, FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureBREAK]>; def FamilyXMEGA : Family<"xmega", - [FamilyAVR0, FeatureLPM, FeaturePROGMEM, FeatureIJMPCALL, + [FamilyAVR0, FeatureLPM, FeatureIJMPCALL, FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL, FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM, FeatureBREAK, FeatureEIJMPCALL, diff --git a/llvm/lib/Target/AVR/AVRSubtarget.h b/llvm/lib/Target/AVR/AVRSubtarget.h --- a/llvm/lib/Target/AVR/AVRSubtarget.h +++ b/llvm/lib/Target/AVR/AVRSubtarget.h @@ -73,7 +73,6 @@ bool hasLPMX() const { return m_hasLPMX; } bool hasELPM() const { return m_hasELPM; } bool hasELPMX() const { return m_hasELPMX; } - bool hasPROGMEM() const { return m_hasPROGMEM; } bool hasSPM() const { return m_hasSPM; } bool hasSPMX() const { return m_hasSPMX; } bool hasDES() const { return m_hasDES; } @@ -128,7 +127,6 @@ bool m_hasLPMX; bool m_hasELPM; bool m_hasELPMX; - bool m_hasPROGMEM; bool m_hasSPM; bool m_hasSPMX; bool m_hasDES;