gcc-python-plugin icon indicating copy to clipboard operation
gcc-python-plugin copied to clipboard

Is it possible that GimpleCond's true_label & false_label are None?

Open aqjune opened this issue 6 years ago • 3 comments

I am scanning through GIMPLE instructions generated from this C code:

void if_simple() {
  int c = cond();
  if (c) {
    f1();
  }
}

The generated GIMPLE is like this:

if_simple ()
{
  int c;

  <bb 2> [100.00%]:
  c_4 = cond ();
  if (c_4 != 0)
    goto <bb 3>; [36.64%]
  else
    goto <bb 4>; [63.36%]

  <bb 3> [36.64%]:
  f1 ();

  <bb 4> [100.00%]:
  return;

}

However, in Python, I'm getting gcc.GimpleCond which has true_label & false_label set to None.

Is there anything I'm missing or is it a bug?

Thanks

aqjune avatar Nov 15 '18 17:11 aqjune

Internally, these are coming from gimple_cond_true_label and gimple_cond_false_label, which presumably are returning NULL, and this is being handled at the Python level as None.

I'm not sure how they could be NULL. When is your code running, compared to the various passes?

davidmalcolm avatar Nov 15 '18 17:11 davidmalcolm

My callback function is registered before optimized pass.

aqjune avatar Nov 15 '18 18:11 aqjune