[llvm-commits] [PATCH] [PATCH] Complete ARM v6m, v7em, and v7m backend support

Chandler Carruth chandlerc at gmail.com
Mon Jan 14 11:07:00 PST 2013


  Sure. =]

  One tweak suggested below. Probably best done in a follow-up as it's just a refactoring that has become clearly needed.

  Thanks!
  -Chandler


================
Comment at: lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp:666-693
@@ -665,21 +665,30 @@
   if (TheTriple.isOSDarwin()) {
     if (TheTriple.getArchName() == "armv4t" ||
         TheTriple.getArchName() == "thumbv4t")
       return new DarwinARMAsmBackend(T, TT, object::mach::CSARM_V4T);
     else if (TheTriple.getArchName() == "armv5e" ||
         TheTriple.getArchName() == "thumbv5e")
       return new DarwinARMAsmBackend(T, TT, object::mach::CSARM_V5TEJ);
     else if (TheTriple.getArchName() == "armv6" ||
         TheTriple.getArchName() == "thumbv6")
       return new DarwinARMAsmBackend(T, TT, object::mach::CSARM_V6);
+    else if (TheTriple.getArchName() == "armv6m" ||
+        TheTriple.getArchName() == "thumbv6m")
+      return new DarwinARMAsmBackend(T, TT, object::mach::CSARM_V6M);
+    else if (TheTriple.getArchName() == "armv7em" ||
+        TheTriple.getArchName() == "thumbv7em")
+      return new DarwinARMAsmBackend(T, TT, object::mach::CSARM_V7EM);
     else if (TheTriple.getArchName() == "armv7f" ||
         TheTriple.getArchName() == "thumbv7f")
       return new DarwinARMAsmBackend(T, TT, object::mach::CSARM_V7F);
     else if (TheTriple.getArchName() == "armv7k" ||
         TheTriple.getArchName() == "thumbv7k")
       return new DarwinARMAsmBackend(T, TT, object::mach::CSARM_V7K);
+    else if (TheTriple.getArchName() == "armv7m" ||
+        TheTriple.getArchName() == "thumbv7m")
+      return new DarwinARMAsmBackend(T, TT, object::mach::CSARM_V7M);
     else if (TheTriple.getArchName() == "armv7s" ||
         TheTriple.getArchName() == "thumbv7s")
       return new DarwinARMAsmBackend(T, TT, object::mach::CSARM_V7S);
     return new DarwinARMAsmBackend(T, TT, object::mach::CSARM_V7);
   }
----------------
I think this whole chain of ifs should be replaced with something more along the lines of:

  CPUSubtypeARM CS = llvm::StringSwitch<CPUSubtypeARM>(TheTriple.getArchName())
      .Cases("armv4t", "thumbv4t", object::mach::CSARM_V4T)
      .Case("armv5e", object::mach::CSARM_V5TEJ)
      ...
      .Default(object::mach::CSARM_V7);
  return new DarwinARMAsmBackend(T, TT, CS);


http://llvm-reviews.chandlerc.com/D296



More information about the llvm-commits mailing list