[llvm-commits] [lld] r158541 - /lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp
Michael Spencer
bigcheesegs at gmail.com
Fri Jun 15 13:43:21 PDT 2012
On Fri, Jun 15, 2012 at 1:29 PM, Nick Kledzik <kledzik at apple.com> wrote:
> Author: kledzik
> Date: Fri Jun 15 15:29:27 2012
> New Revision: 158541
>
> URL: http://llvm.org/viewvc/llvm-project?rev=158541&view=rev
> Log:
> Use ADT/StringSwitch
>
> Modified:
> lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp
>
> Modified: lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp?rev=158541&r1=158540&r2=158541&view=diff
> ==============================================================================
> --- lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp (original)
> +++ lld/trunk/lib/ReaderWriter/MachO/ReferenceKinds.cpp Fri Jun 15 15:29:27 2012
> @@ -11,6 +11,7 @@
> #include "ReferenceKinds.h"
>
> #include "llvm/ADT/StringRef.h"
> +#include "llvm/ADT/StringSwitch.h"
>
>
> namespace lld {
> @@ -52,41 +53,25 @@
> }
>
> Reference::Kind KindHandler_x86_64::stringToKind(StringRef str) {
> - if ( str.equals("none") )
> - return none;
> - else if ( str.equals("branch32") )
> - return branch32;
> - else if ( str.equals("ripRel32") )
> - return ripRel32;
> - else if ( str.equals("ripRel32_1") )
> - return ripRel32_1;
> - else if ( str.equals("ripRel32_2") )
> - return ripRel32_2;
> - else if ( str.equals("ripRel32_4") )
> - return ripRel32_4;
> - else if ( str.equals("gotLoadRipRel32") )
> - return gotLoadRipRel32;
> - else if ( str.equals("gotLoadRipRel32NowLea") )
> - return gotLoadRipRel32NowLea;
> - else if ( str.equals("gotUseRipRel32") )
> - return gotUseRipRel32;
> - else if ( str.equals("tlvLoadRipRel32") )
> - return tlvLoadRipRel32;
> - else if ( str.equals("tlvLoadRipRel32NowLea") )
> - return tlvLoadRipRel32NowLea;
> - else if ( str.equals("pointer64") )
> - return pointer64;
> - else if ( str.equals("pointerRel32") )
> - return pointerRel32;
> - else if ( str.equals("lazyTarget") )
> - return lazyTarget;
> - else if ( str.equals("lazyImmediate") )
> - return lazyImmediate;
> - else if ( str.equals("subordinateFDE") )
> - return subordinateFDE;
> - else if ( str.equals("subordinateLSDA") )
> - return subordinateLSDA;
> -
> + return llvm::StringSwitch<Reference::Kind>(str)
> + .Case("none", none)
> + .Case("branch32", branch32)
> + .Case("ripRel32", ripRel32)
> + .Case("ripRel32_1", ripRel32_1)
> + .Case("ripRel32_2", ripRel32_2)
> + .Case("ripRel32_4", ripRel32_4)
> + .Case("gotLoadRipRel32", gotLoadRipRel32)
> + .Case("gotLoadRipRel32NowLea", gotLoadRipRel32NowLea)
> + .Case("gotUseRipRel32", gotUseRipRel32)
> + .Case("tlvLoadRipRel32", tlvLoadRipRel32)
> + .Case("tlvLoadRipRel32NowLea", tlvLoadRipRel32NowLea)
> + .Case("pointer64", pointer64)
> + .Case("pointerRel32", pointerRel32)
> + .Case("lazyTarget", lazyTarget)
> + .Case("lazyImmediate", lazyImmediate)
> + .Case("subordinateFDE", subordinateFDE)
> + .Case("subordinateLSDA", subordinateLSDA);
> +
> assert(0 && "invalid x86_64 Reference kind");
> return 0;
> }
> @@ -203,20 +188,14 @@
> }
>
> Reference::Kind KindHandler_x86::stringToKind(StringRef str) {
> - if ( str.equals("none") )
> - return none;
> - else if ( str.equals("branch32") )
> - return branch32;
> - else if ( str.equals("abs32") )
> - return abs32;
> - else if ( str.equals("funcRel32") )
> - return funcRel32;
> - else if ( str.equals("pointer32") )
> - return pointer32;
> - else if ( str.equals("lazyTarget") )
> - return lazyTarget;
> - else if ( str.equals("lazyImmediate") )
> - return lazyImmediate;
> + return llvm::StringSwitch<Reference::Kind>(str)
> + .Case("none", none)
> + .Case("branch32", branch32)
> + .Case("abs32", abs32)
> + .Case("funcRel32", funcRel32)
> + .Case("pointer32", pointer32)
> + .Case("lazyTarget", lazyTarget)
> + .Case("lazyImmediate", lazyImmediate);
>
> assert(0 && "invalid x86 Reference kind");
> return 0;
> @@ -299,30 +278,19 @@
> }
>
> Reference::Kind KindHandler_arm::stringToKind(StringRef str) {
> - if ( str.equals("none") )
> - return none;
> - else if ( str.equals("thumbBranch22") )
> - return thumbBranch22;
> - else if ( str.equals("armBranch24") )
> - return armBranch24;
> - else if ( str.equals("thumbAbsLow16") )
> - return thumbAbsLow16;
> - else if ( str.equals("thumbAbsHigh16") )
> - return thumbAbsHigh16;
> - else if ( str.equals("thumbPcRelLow16") )
> - return thumbPcRelLow16;
> - else if ( str.equals("thumbPcRelHigh16") )
> - return thumbPcRelHigh16;
> - else if ( str.equals("abs32") )
> - return abs32;
> - else if ( str.equals("pointer32") )
> - return pointer32;
> - else if ( str.equals("lazyTarget") )
> - return lazyTarget;
> - else if ( str.equals("lazyImmediate") )
> - return lazyImmediate;
> - else if ( str.equals("subordinateLSDA") )
> - return subordinateLSDA;
> + return llvm::StringSwitch<Reference::Kind>(str)
> + .Case("none", none)
> + .Case("thumbBranch22", thumbBranch22)
> + .Case("armBranch24", armBranch24)
> + .Case("thumbAbsLow16", thumbAbsLow16)
> + .Case("thumbAbsHigh16", thumbAbsHigh16)
> + .Case("thumbPcRelLow16", thumbPcRelLow16)
> + .Case("thumbPcRelHigh16", thumbPcRelHigh16)
> + .Case("abs32", abs32)
> + .Case("pointer32", pointer32)
> + .Case("lazyTarget", lazyTarget)
> + .Case("lazyImmediate", lazyImmediate)
> + .Case("subordinateLSDA", subordinateLSDA);
>
> assert(0 && "invalid ARM Reference kind");
> return 0;
This isn't handling the default (unknown string) case. Generally how I
handle this with StringSwitch is to use some specific value to
represent the default case and checking for that.
Also the assert and return 0 are now dead code. And the assert should
be a llvm_unreachable.
- Michael Spencer
More information about the llvm-commits
mailing list