[lld] r194624 - Remove default label from fully covered switch.

Duncan P. N. Exon Smith dexonsmith at apple.com
Wed Nov 13 22:31:57 PST 2013

On 2013 Nov 13, at 21:41, Rui Ueyama <ruiu at google.com> wrote:

> On Wed, Nov 13, 2013 at 7:21 PM, Duncan Exon Smith <dexonsmith at apple.com> wrote:
> On Nov 13, 2013, at 3:33 PM, Rui Ueyama <ruiu at google.com> wrote:
> >   case NCR_Error:
> >     llvm::errs() << "SymbolTable: error while merging " << name << "\n";
> > -    // FALLTHRU
> > -  default:
> > -    llvm::report_fatal_error("SymbolTable::addByName(): unhandled switch clause");
> >   }
> Was the change in behavior intended, or should you add a new report_fatal_error() call?
> This change is kind of intended. If something wrong in the input, we sometimes terminate the linker immediately, and sometimes continue processing after printing an error with llvm::err(). Previously the linker is terminated with pretty vague error message ("unhandled switch clause"). With this patch it proceed after printing an error. I was OK in either way, so I just removed default label. I should have made this point clear in the commit log. Sorry about that.

NCR_Error specifically indicates that one of the symbols is absolute; interesting that this isn’t worth terminating over.  I see that some duplicate definitions result in termination.  However, as long as new behavior is intentional, you may want to change the llvm::errs printout to “lld warning: ...” and be more explicit than “error while merging”.

Style nit: last case item should probably have a “break;”.

More information about the llvm-commits mailing list