@Test
public void testOutParamFrexpHasSideEffects() throws Exception {

  final String shader = "void main() { "
      + "  int out1;"
      + "  ivec2 out2;"
      + "  ivec3 out3;"
      + "  ivec4 out4;"
      + "  frexp(0.0, out1);"
      + "  frexp(vec2(0.0), out2);"
      + "  frexp(vec3(0.0), out3);"
      + "  frexp(vec4(0.0), out4);"
      + "}";
  final TranslationUnit tu = ParseHelper.parse(shader, ShaderKind.FRAGMENT);
  tu.setShadingLanguageVersion(ShadingLanguageVersion.ESSL_310);
  new StandardVisitor() {
    @Override
    public void visitFunctionCallExpr(FunctionCallExpr expr) {
      assertTrue(expr.getCallee().equals("frexp"));
      assertFalse(SideEffectChecker.isSideEffectFree(expr, ShadingLanguageVersion.ESSL_310,
          ShaderKind.FRAGMENT));
    }
  }.visit(tu);
}