[PATCH] [mips] [IAS] Make .module directives change AssemblerOptions->front().
Toma Tabacu
toma.tabacu at imgtec.com
Tue Jun 23 03:39:29 PDT 2015
Hi dsanders,
http://reviews.llvm.org/D10643
Files:
lib/Target/Mips/AsmParser/MipsAsmParser.cpp
Index: lib/Target/Mips/AsmParser/MipsAsmParser.cpp
===================================================================
--- lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -352,6 +352,18 @@
}
}
+ void setModuleFeatureBits(uint64_t Feature, StringRef FeatureString) {
+ setFeatureBits(Feature, FeatureString);
+ if (!(STI.getFeatureBits()[Feature]))
+ AssemblerOptions.front()->setFeatures(STI.getFeatureBits());
+ }
+
+ void clearModuleFeatureBits(uint64_t Feature, StringRef FeatureString) {
+ clearFeatureBits(Feature, FeatureString);
+ if (STI.getFeatureBits()[Feature])
+ AssemblerOptions.front()->setFeatures(STI.getFeatureBits());
+ }
+
public:
enum MipsMatchResultTy {
Match_RequiresDifferentSrcAndDst = FIRST_TARGET_MATCH_RESULT_TY
@@ -4468,7 +4480,7 @@
}
if (Option == "oddspreg") {
- clearFeatureBits(Mips::FeatureNoOddSPReg, "nooddspreg");
+ clearModuleFeatureBits(Mips::FeatureNoOddSPReg, "nooddspreg");
// Synchronize the abiflags information with the FeatureBits information we
// changed above.
@@ -4492,7 +4504,7 @@
return false;
}
- setFeatureBits(Mips::FeatureNoOddSPReg, "nooddspreg");
+ setModuleFeatureBits(Mips::FeatureNoOddSPReg, "nooddspreg");
// Synchronize the abiflags information with the FeatureBits information we
// changed above.
@@ -4557,6 +4569,7 @@
StringRef Directive) {
MCAsmParser &Parser = getParser();
MCAsmLexer &Lexer = getLexer();
+ bool ModuleLevelOptions = Directive == ".module";
if (Lexer.is(AsmToken::Identifier)) {
StringRef Value = Parser.getTok().getString();
@@ -4573,8 +4586,13 @@
}
FpABI = MipsABIFlagsSection::FpABIKind::XX;
- setFeatureBits(Mips::FeatureFPXX, "fpxx");
- clearFeatureBits(Mips::FeatureFP64Bit, "fp64");
+ if (ModuleLevelOptions) {
+ setModuleFeatureBits(Mips::FeatureFPXX, "fpxx");
+ clearModuleFeatureBits(Mips::FeatureFP64Bit, "fp64");
+ } else {
+ setFeatureBits(Mips::FeatureFPXX, "fpxx");
+ clearFeatureBits(Mips::FeatureFP64Bit, "fp64");
+ }
return true;
}
@@ -4594,12 +4612,22 @@
}
FpABI = MipsABIFlagsSection::FpABIKind::S32;
- clearFeatureBits(Mips::FeatureFPXX, "fpxx");
- clearFeatureBits(Mips::FeatureFP64Bit, "fp64");
+ if (ModuleLevelOptions) {
+ clearModuleFeatureBits(Mips::FeatureFPXX, "fpxx");
+ clearModuleFeatureBits(Mips::FeatureFP64Bit, "fp64");
+ } else {
+ clearFeatureBits(Mips::FeatureFPXX, "fpxx");
+ clearFeatureBits(Mips::FeatureFP64Bit, "fp64");
+ }
} else {
FpABI = MipsABIFlagsSection::FpABIKind::S64;
- clearFeatureBits(Mips::FeatureFPXX, "fpxx");
- setFeatureBits(Mips::FeatureFP64Bit, "fp64");
+ if (ModuleLevelOptions) {
+ clearModuleFeatureBits(Mips::FeatureFPXX, "fpxx");
+ setModuleFeatureBits(Mips::FeatureFP64Bit, "fp64");
+ } else {
+ clearFeatureBits(Mips::FeatureFPXX, "fpxx");
+ setFeatureBits(Mips::FeatureFP64Bit, "fp64");
+ }
}
return true;
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10643.28215.patch
Type: text/x-patch
Size: 3167 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150623/4f5bd6c3/attachment.bin>
More information about the llvm-commits
mailing list