flow/expressions/function_hooks: re-fix is_assigned_call()
The is_assigned_call() is totally essential so that we don't parse function
calls twice as an assignment and then as a normal function call.
It's pretty complicated because we do a bunch of fake assignments. For
initializers, for things like "foo = bar() ?: 0;" or
"foo = (({blah; blah; bar();}));". It's not always clear what the ->parent
struct should be I think...
Anyway, this change sort of reverts it to how it used to be. In
assign_expression() we allocate a normal expression struct so it isn't
freed at the end of the function and we set the ->parent to then
assignment.
There is still an issue where I guess we parse the call first, then fake
an assignment, and then parse that. It's the reverse order from normal so
we end up parsing the function twice and it causes one or two puzzling
false positives in the kernel. I need to think about that.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>