Take: ``` typedef int si; typedef unsigned ui; si f(si a) { ui t = a; t = ~t; si a1 = t; return a1; } si f1(si a) { return ~a; } int g(si a) { return f(a) + f1(a) == (si)(2*(~a)); } ``` g should optimize to 1 which it does on the RTL level