class_docstr: Add a flag on each function that updates a global variable.
class_docstr_tok: ["Add","a","flag","on","each","function","that","updates","a","global","variable","."]
code: def visit_Call(self, node):
      # try to get all aliases of the function, if possible
      # else use [] as a fallback
      func_aliases = self.aliases[node.func]
      # expand argument if any
      func_aliases = reduce(
          # all funcs
          lambda x, y: x
          + (
              list(self.node_to_functioneffect.keys())
              if isinstance(y, ast.Name)
              else [y]
          ),
          func_aliases,
          list(),
      )
      for func_alias in func_aliases:
          # special hook for bound functions
          if isinstance(func_alias, ast.Call):
              fake_call = ast.Call(
                  func_alias.args[0], func_alias.args[1:], []
              )
              self.visit(fake_call)
              continue
  
          # conservative choice
          if func_alias not in self.node_to_functioneffect:
              func_alias = intrinsic.UnboundValue
  
          func_alias = self.node_to_functioneffect[func_alias]
          self.result.add_edge(self.current_function, func_alias)
      self.generic_visit(node)
  
imports: from pythran.analyses.aliases import Aliases
  from pythran.analyses.intrinsics import Intrinsics
  from pythran.analyses.global_declarations import GlobalDeclarations
  from pythran.passmanager import ModuleAnalysis
  from pythran.tables import MODULES
  from pythran.graph import DiGraph
  import pythran.intrinsic
  import gast
  from functools import reduce
label_desc: Use image node_id 6 for calling the GlobalEffects obj's underlying member method code with example usage: obj.visit_Call(node) without return types