This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Question about rtx format for insn, call_insn and junp_insn
sorry I get incorrect gcc version info
the correct version which doing dump is gcc 4.1.2
I dump rtl with the gcc 4.4.1 have the line info
thanks for you reply
2010/5/20 Ian Lance Taylor <iant@google.com>:
> kito <npickito@gmail.com> writes:
>
>> Hello every body
>> I have read the rtl.h & rtl.c,
>> but I don't realize the format for??insn, call_insn?and junp_insn
>>
>> it's define in rtl.def
>>
>> DEF_RTL_EXPR(JUMP_INSN, "jump_insn", "iuuBieie0", RTX_INSN)
>>
>> and it's dump by some real program
>>
>> (jump_insn 14 ?/* ?i */
>> ?? ? ? ? ? 13 ? ? ? ? /* ?u */
>> ?? ? ? ? ? 15 ? ? ? ? /* u ?*/
>> ?? ? ? ? ? 1 ? ? ? ? ? /* B */
>> ?? ? ? ? ? (set (pc)
>> ?? ? ? ? ? ? ? ?(if_then_else (le (reg:CCGC 17 flags)
>> ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(const_int 0 [0x0]))
>> ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(label_ref 24)
>> ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(pc))) ? ? ? ? ? ? ? ? ? ? ? ?/* ? e?? */
>> ?? ? ? ? ?-1 ? ? /* i? */
>> ?? ? ? ? ?(nil) ?/* e? ?*/
>> ?? ? ? ? ?(nil) ?/* 0? */ )
>>
>> so my question is where is the i after B ??
>
> Which program is doing the dump? ?The generator programs (genattrtab,
> etc.) produce different dumps from the compilers.
>
> The 'i' after the 'B' represents an insn locator, a value of type
> source_location aka location_t aka unsigned int. ?A generator program
> will never print that value. ?A compiler will print it only if it has
> a value--if the instruction has a known location. ?It will be printed
> as filename:lineno when available.
>
> The corresponding code in print-rtl.c is:
>
> ? ? ?case 'i':
> ? ? ? ?if (i == 4 && INSN_P (in_rtx))
> ? ? ? ? ?{
> #ifndef GENERATOR_FILE
> ? ? ? ? ? ?/* ?Pretty-print insn locators. ?Ignore scoping as it is mostly
> ? ? ? ? ? ? ? ?redundant with line number information and do not print anything
> ? ? ? ? ? ? ? ?when there is no location information available. ?*/
> ? ? ? ? ? ?if (INSN_LOCATOR (in_rtx) && insn_file (in_rtx))
> ? ? ? ? ? ? ?fprintf(outfile, " %s:%i", insn_file (in_rtx), insn_line (in_rtx));
> #endif
>
> Ian
>