On Wed, Apr 13, 2011 at 5:32 PM, Ian Lance Taylor <i...@google.com> wrote:
> Feng LI <nemoking...@gmail.com> writes:
>
>> I use unspec_volatile for a function with void arguments and
>> void return value for some initialization work. But it didn't generate
>> code in this case. I think probably I need to add more restrictions
>> some where but I don't know why and how. The code looks like:
>>
>> extern __inline void __attribute__((__gnu_inline__, __always_inline__,
>> __artificial__))
>> __TEnd (void)
>> {
>>   __builtin_ia32_tend ();
>> }
>>
>> (define_expand "dta_tend"
>>   [(unspec_volatile [(const_int 0)] UNSPEC_TEND)]
>>   ""
>>   "")
>>
>> (define_insn "*dta_tend"
>>   [(unspec_volatile [(const_int 0)] UNSPEC_TEND)]
>>   ""
>>   "tend"
>>   [(set_attr "length" "3")
>>    (set_attr "mode" "none")])
>
> In the RTL dumps generated by -da, where does the insn appear and where
> does it disappear?

It seems that it disappear at the ffork.c.143r.expand at the very beginning.
I suppose there should be some thing like
(call_insn ....) generated for  __builtin_ia32_tend (); But there isn't.
instead, it generated:

;; Generating RTL for gimple basic block 2
;; __builtin_ia32_tend ();
(nil)

Feng
>
> Ian
>

Reply via email to