sdardis added a comment.

Slight tweak to the summary:

> The -mabicalls option does not have a sense in case of non position 
> independent code on N64 ABI. After this change driver starts to show a 
> warning that -mabicalls is ignored in that case.

The -mabicalls option does not make sense in the case of non position 
independent code for the N64 ABI. After this change the driver shows a warning 
that -mabicalls is ignored in that case.

I think the major change in this patch is overly complex for what it should be, 
suggestion inline.



================
Comment at: include/clang/Basic/DiagnosticDriverKinds.td:297
+  "ignoring '-mabicalls' option as it cannot be used with "
+  "non position-independent code and N64 ABI">,
+  InGroup<OptionIgnored>;
----------------
and the N64 ABI


================
Comment at: lib/Driver/ToolChains/Arch/Mips.cpp:233-253
+  Arg *ABICallsArg =
+      Args.getLastArg(options::OPT_mabicalls, options::OPT_mno_abicalls);
+  if (!ABICallsArg)
+    NeedNoAbiCalls = DefNoAbiCalls;
+  else {
+    if (ABICallsArg->getOption().matches(options::OPT_mno_abicalls))
+      NeedNoAbiCalls = true;
----------------
I think this logic can be simplified to:

  bool UseAbiCalls = false;                                                     
                                       
  
  Arg *ABICallsArg =
      Args.getLastArg(options::OPT_mabicalls, options::OPT_mno_abicalls);       
                                       
  UseAbiCalls =
      !ABICallsArg || 
      (ABICallsArg && 
ABICallsArg->getOption().matches(options::OPT_mabicalls));                      
                 
  
  if (UseAbiCalls && IsN64 && NonPIC) {
    D.Diag(diag::warn_drv_unsupported_abicalls);                                
                                       
    UseAbiCalls = false;                                                        
                                       
  }                                                                             
                                       
  
  if (!UseAbiCalls)
    Features.push_back("+noabicalls");                                          
                                       
  else
    Features.push_back("-noabicalls");         

As that way we immediately pick up the implicit case or explicit case of using 
-mabicalls and we can simply pick out the N64 && NonPic && UseAbiCalls case to 
warn and fix.

Although we don't need to add "-noabicalls" to the Features vector, the backend 
defaults to that, though the tests expect it.


Repository:
  rL LLVM

https://reviews.llvm.org/D36550



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to