dsanders requested changes to this revision. This revision now requires changes to proceed.
================ Comment at: lib/Driver/Tools.cpp:2501-2524 @@ -2500,2 +2500,26 @@ } + + const char *Feature = llvm::StringSwitch<const char *>(Value) + .Case("-mips1", "+mips1") + .Case("-mips2", "+mips2") + .Case("-mips3", "+mips3") + .Case("-mips4", "+mips4") + .Case("-mips32", "+mips32") + .Case("-mips32r2", "+mips32r2") + .Case("-mips32r3", "+mips32r3") + .Case("-mips32r5", "+mips32r5") + .Case("-mips32r6", "+mips32r6") + .Case("-mips64", "+mips64") + .Case("-mips64r2", "+mips64r2") + .Case("-mips64r3", "+mips64r3") + .Case("-mips64r5", "+mips64r5") + .Case("-mips64r6", "+mips64r6") + .Default(""); + + StringRef FeatureStringRef = Feature; + if (FeatureStringRef != "") { + CmdArgs.push_back("-target-feature"); + CmdArgs.push_back(Feature); + continue; + } break; ---------------- We don't quite do the right thing when we get multiple -mips* options. For -Wa,-mips64r2,-mips4 we don't undo the effect of the '-target-feature +mips64r2' when we process the -mips4. As a result, the selected target is mips64r2 whereas GAS would select mips4. We can't fix this by adding a '-target-feature -mips64r2' since would select mips64 so we'll need to wait until we've seen all the '-Wa,' arguments before we add the -target-feature (similar to --compress-debug-sections). ================ Comment at: lib/Driver/Tools.cpp:2506-2507 @@ +2505,4 @@ + .Case("-mips3", "+mips3") + .Case("-mips4", "+mips4") + .Case("-mips32", "+mips32") + .Case("-mips32r2", "+mips32r2") ---------------- There should be a mips5 case too. ================ Comment at: test/Driver/mips-ias-Wa.s:66-74 @@ +65,11 @@ + +// RUN: %clang -target mips-linux-gnu -### -fintegrated-as -c %s -Wa,-mips4 2>&1 | \ +// RUN: FileCheck -check-prefix=MIPS4 %s +// MIPS4: -cc1as +// MIPS4: "-target-feature" "+mips4" + +// RUN: %clang -target mips-linux-gnu -### -fintegrated-as -c %s -Wa,-mips32 2>&1 | \ +// RUN: FileCheck -check-prefix=MIPS32 %s +// MIPS32: -cc1as +// MIPS32: "-target-feature" "+mips32" + ---------------- There should be a mips5 case too ================ Comment at: test/Driver/mips-ias-Wa.s:121-129 @@ +120,10 @@ + +// RUN: %clang -target mips-linux-gnu -### -fintegrated-as -c %s -Wa,-mips64r2,-mips4 2>&1 | \ +// RUN: FileCheck -check-prefix=MIPS64R2-MIPS4 %s +// MIPS64R2-MIPS4: -cc1as +// MIPS64R2-MIPS4: "-target-feature" "+mips4" + +// RUN: %clang -target mips-linux-gnu -### -fintegrated-as -c %s -Wa,-mips64,-mips32,-mips32r2 2>&1 | \ +// RUN: FileCheck -check-prefix=MIPS64-MIPS32-MIPS32R2 %s +// MIPS64-MIPS32-MIPS32R2: -cc1as +// MIPS64-MIPS32-MIPS32R2: "-target-feature" "+mips32r2" ---------------- These two tests aren't quite right since the selected target is the maximum of the three at the moment. http://reviews.llvm.org/D15070 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits