This is the mail archive of the 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]

[PATCH, generic] Fix for define_subst

Here is copy-and-paste from issue raised by Ian (in the bottom).

Fix is attached.
ChangeLog entry:
2012-11-22  Michael Zolotukhin  <>

        * gensupport.c (add_c_test): Check if expr isn't NULL.

Is it ok for trunk?

=== CUT HERE ===
It looks like the recent VEC rewrite might have interacted badly with
this patch.

I am getting a segfault in genconditions.c when add_c_test is called
for "desc".

I think it is because the condition is not within a vector.

Example of "desc" for working pattern:

(define_insn ("*zero_extendqihi2_aarch64")
        (set (match_operand:HI 0 ("register_operand") ("=r,r"))
            (zero_extend:HI (match_operand:QI 1 ("nonimmediate_operand")
    ] ("") ("@
   uxtb\t%w0, %w1
   ldrb\t%w0, %1")
        (set_attr ("v8type") ("extend,load1"))
        (set_attr ("mode") ("HI"))

Example of "desc" for broken one that uses define_subst:

(define_insn ("*addsi3_aarch64_noextend")
        (set (match_operand:SI 0 ("register_operand") ("=rk,rk,rk"))
            (plus:SI (match_operand:SI 1 ("register_operand") ("%rk,rk,rk"))
                (match_operand:SI 2 ("aarch64_plus_operand") ("I,r,J"))))
    ] "" ("@
  add\t%w0, %w1, %2
  add\t%w0, %w1, %w2
  sub\t%w0, %w1, #%n2")
        (set_attr ("v8type") ("alu"))
        (set_attr ("mode") ("SI"))

Note that there are no brackets around the "" condition.  That's the issue,

=== CUT HERE ===

Thanks, K

Attachment: add_c_test.patch
Description: Binary data

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]