Questions about IDA 9.4 changelog

ui: add possibility to invert then-else for if statement"

Is the if-else plugin still relevant or is it built-in functionality in the decompiler?

vd: structure phi-arm diamond merges as if-then-else instead of gotos

What is “phi-arm diamond”? Google doesn’t recognize such abbreviations.
Is it something related to the ARM architecture or an internal abbreviation?

mbui: structural analysis action did not show intermediate reduction steps in non-debug builds

Does this have anything to do with the SDK for developers or did it somehow affect the decompilation results?

ps
Is it possible to see the pull request for SDK 9.4 beta on GitHub yet?

The if-else plugin is still present for educational purposes.
phi-arm diamond is probably confusing, hope this picture helps:

// When the CFG has the pattern:
//
// N
// / \ (N is a conditional jump)
// A B (A, B = tiny phi-arm sinks each with a single assignment)
// \ /
// S

the display of structural analysis does not affect decompilation quality.

i hope we will put the sdk online soon.

This somewhat limits the ability to automatically use this functionality.

I mean, if a user wants (as I’d like to do) the “if” clause to be ordered by the EA via their plugin, they won’t be able to do so. Because to invert the “else” clause, they need to use the hexrays themselves.

Am I understanding this correctly?

Also, what’s the difference between the new then-else and the SDK if-else plugin?
I expected the new then-else to be able to invert a regular if without an else, but alas, it doesn’t.

Well, your expectations were way too high. What did you expect from inverting an if without else?

i dont like then hexrays break “if else” into “if return” and become as

if (condition)
{
   body
  return;
}
body
return

i would like revert this, but its need to concat ast into if-else , invert , and split again,
or dont split and leave as inverted if-else
its too overskill for me

the finally target of this, sort body by EA

  1. this will be more near for placed in original binary file
  2. try/catch in some cases will structured instead unstructured