[Bug target/65689] [5 Regression][AArch64] S constraint fails for inline asm at -O0

jgreenhalgh at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jan 12 13:55:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65689

--- Comment #16 from James Greenhalgh <jgreenhalgh at gcc dot gnu.org> ---
Author: jgreenhalgh
Date: Tue Jan 12 13:54:45 2016
New Revision: 232269

URL: https://gcc.gnu.org/viewcvs?rev=232269&root=gcc&view=rev
Log:
Backport: [PATCH] Be less conservative in process_{output,input}_constraints
(PR target/65689)

gcc/

        Backport from mainline r222186.
        2015-04-17  Jakub Jelinek  <jakub@redhat.com>

        PR target/65689
        * genpreds.c (struct constraint_data): Add maybe_allows_reg and
        maybe_allows_mem bitfields.
        (maybe_allows_none_start, maybe_allows_none_end,
        maybe_allows_reg_start, maybe_allows_reg_end, maybe_allows_mem_start,
        maybe_allows_mem_end): New variables.
        (compute_maybe_allows): New function.
        (add_constraint): Use it to initialize maybe_allows_reg and
        maybe_allows_mem fields.
        (choose_enum_order): Sort the non-is_register/is_const_int/is_memory/
        is_address constraints such that those that allow neither mem nor
        reg come first, then those that only allow reg but not mem, then
        those that only allow mem but not reg, then the rest.
        (write_allows_reg_mem_function): New function.
        (write_tm_preds_h): Call it.
        * stmt.c (parse_output_constraint, parse_input_constraint): Use
        the generated insn_extra_constraint_allows_reg_mem function
        instead of always setting *allows_reg = true; *allows_mem = true;
        for unknown extra constraints.

gcc/testsuite/

        Backport from mainline r222186.
        2015-04-17  Jakub Jelinek  <jakub@redhat.com>

        PR target/65689
        * gcc.target/aarch64/c-output-template-4.c: New test.


Added:
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/aarch64/c-output-template-4.c
      - copied unchanged from r222186,
trunk/gcc/testsuite/gcc.target/aarch64/c-output-template-4.c
Modified:
    branches/gcc-5-branch/   (props changed)
    branches/gcc-5-branch/gcc/ChangeLog
    branches/gcc-5-branch/gcc/genpreds.c
    branches/gcc-5-branch/gcc/stmt.c
    branches/gcc-5-branch/gcc/testsuite/ChangeLog

Propchange: branches/gcc-5-branch/
            ('svn:mergeinfo' modified)


More information about the Gcc-bugs mailing list