[PATCH] D56353: Replace cc1 options '-mdisable-fp-elim' and '-momit-leaf-frame-pointer' with'-mframe-pointer='

Yuanfang Chen via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 16 22:58:54 PST 2019


tabloid.adroit marked 2 inline comments as done.
tabloid.adroit added inline comments.


================
Comment at: lib/Driver/ToolChains/Clang.cpp:576-579
+  Arg *FP = Args.getLastArg(options::OPT_fno_omit_frame_pointer,
+                            options::OPT_fomit_frame_pointer);
+  Arg *LeafFP = Args.getLastArg(options::OPT_mno_omit_leaf_frame_pointer,
+                                options::OPT_momit_leaf_frame_pointer);
----------------
chandlerc wrote:
> This still doesn't make sense to me...
> 
> If the user specifies `-fomit-frame-point` or `-fno-omit-frame-pointer` *after* `-momit-leaf-frame-pointer` or `-mno-omit-leaf-frame-pointer`, then that last flag should win...
> 
> I think you need to first get the "base" FP state by checking the main two flags. Then you need to get the "last" FP state by checking *all four flags*. When the last flag is a leaf flag, then the state is determined by the base + the last. When the last flag is not one of the leaf flags, then the last flag fully specifies the result.
> 
> I think you can also process these variables into something simpler to test below, essentially handling all the matching logic in one place.
I see the point here. I didn't do it since it deviates from GCC/intel compiler behavior. Could you please confirm we really want that?

One example from here is : ` -momit-leaf-frame-pointer -fno-omit-frame-pointer`
(https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-momit-leaf-frame-pointer)

For GCC/intel, this is frame-pointer=non-leaf, for us, it will be frame-pointer=all


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56353/new/

https://reviews.llvm.org/D56353





More information about the cfe-commits mailing list