On 06/05/2018 09:14 AM, DeepaBallari via gcc wrote: > Hello,I'm a newbie to GCC.Have done some changes to .md file(specifically > peephole.md) and the changes are not taking place.How to debug the .md file ? > Thanks! >
Hi. .md files are transformed using gen* tools into C files. There's small example (from insn-recog.c): 131239 static rtx_insn * 131240 peephole2_3 (rtx x1 ATTRIBUTE_UNUSED, 131241 rtx_insn *insn ATTRIBUTE_UNUSED, 131242 int *pmatch_len_ ATTRIBUTE_UNUSED) 131243 { 131244 rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0]; 131245 rtx x2, x3, x4, x5, x6, x7, x8; 131246 rtx_insn *res ATTRIBUTE_UNUSED; 131247 x2 = PATTERN (peep2_next_insn (1)); 131248 if (GET_CODE (x2) != SET) 131249 return NULL; 131250 x3 = XEXP (x2, 1); 131251 if (GET_CODE (x3) != SUBREG 131252 || maybe_ne (SUBREG_BYTE (x3), 0) 131253 || GET_MODE (x3) != E_SImode) 131254 return NULL; 131255 x4 = XEXP (x2, 0); 131256 if (GET_CODE (x4) != ZERO_EXTRACT 131257 || GET_MODE (x4) != E_SImode) 131258 return NULL; 131259 x5 = XEXP (x4, 1); 131260 if (x5 != const_int_rtx[MAX_SAVED_CONST_INT + 8]) 131261 return NULL; 131262 x6 = XEXP (x4, 2); 131263 if (x6 != const_int_rtx[MAX_SAVED_CONST_INT + 8]) 131264 return NULL; 131265 x7 = XEXP (x4, 0); 131266 operands[2] = x7; 131267 if (!ext_register_operand (operands[2], E_VOIDmode)) 131268 return NULL; 131269 x8 = XEXP (x3, 0); 131270 if (!rtx_equal_p (x8, operands[0]) 131271 || ! 131272 #line 3125 "../../gcc/config/i386/i386.md" 131273 (TARGET_64BIT 131274 && peep2_reg_dead_p (2, operands[0]))) 131275 return NULL; 131276 *pmatch_len_ = 1; 131277 return gen_peephole2_5 (insn, operands); 131278 } As you can see, there are '#line' directives. These should be debugable in GDB: $ break i386.md:3125. Alternative approach is to put gcc_unreachable into a peephole and then you should be able to debug that. Note that I would recommend to automatically load ./gcc/gdbhooks.py file. Martin