Skip to content
  • Nate Begeman's avatar
    Implement basic overload support via a new builtin, __builtin_overload. · 1e36a85f
    Nate Begeman authored
    __builtin_overload takes 2 or more arguments:
    0) a non-zero constant-expr for the number of arguments the overloaded 
       functions will take
    1) the arguments to pass to the matching overloaded function
    2) a list of functions to match.
    
    The return type of __builtin_overload is inferred from the function whose args
    match the types of the arguments passed to the builtin.  For example:
    
    float a;
    float sinf(float);
    int   sini(int);
    
    float b = __builtin_overload(1, a, sini, sinf);
    
    Says that we are overloading functions that take one argument, and trying to 
    pass an argument of the same type as 'a'.  sini() does not match since it takes
    and argument of type int.  sinf does match, so at codegen time this will turn
    into float b = sinf(a);
    
    llvm-svn: 46132
    1e36a85f
Loading