This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Forgot to add the test case. Patch updated. Sri On Fri, Sep 20, 2013 at 7:06 PM, Sriraman Tallam <tmsriram@google.com> wrote: > On Wed, Aug 14, 2013 at 3:38 AM, Richard Biener > <richard.guenther@gmail.com> wrote: >> On Wed, Aug 14, 2013 at 2:02 AM, Sriraman Tallam <tmsriram@google.com> >> wrote: >>> >>> Hi, >>> >>> I have attached a patch to fix PR57756. Description: The >>> following program, >>> >>> __attribute__((always_inline,target("sse4.2"))) >>> __inline int callee () >>> { >>> return 0; >>> } >>> >>> __attribute__((target("sse"))) >>> __inline int caller () >>> { >>> return callee(); >>> } >>> >>> does not generate an error and callee is inlined into caller. This is >>> because callee has a higher target ISA. Interchanging the position of >>> caller and callee will generate the correct error. Also, removing the >>> target attribute from caller will generate the error. >>> >>> The reason for the bug is that when the caller's target options are >>> processed, global_options contain the ISA flags of the callee >>> (previously processed) and doing this in i386-common.c, where opts is >>> global_options: >>> >>> opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE_SET; >>> >>> is not changing global options. The fix is to reset global_options to >>> the default each time a new target option needs to be processed. >> >> >> Shouldn't ix86_valid_target_attribute_tree be refactored to work on a >> selected >> opt structure rather than global_options? > > I have attached a patch that does the refactoring of > ix86_valid_target_attribute_tree. In that process I had to refactor > ix86_valid_target_attribute_inner_p and ix86_option_override_internal. > This made it a large patch because global_options structure is touched > by these functions in multiple places and through vvarious aliases > like ix86_arch_string for instance. In effect, this frees these > functions from depending on global_options and the code in > ix86_alid_target_attribute_p shows how the original bug can be fixed > by just using a different gcc_options structure. > > Please review. > > Thanks > Sri > > > >> Richard. >> >>> >>> Patch ok? >>> >>> Thanks >>> Sri >> >>
Attachment:
pr57756.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |