glsl: Reject ambiguous function calls (multiple inexact matches).
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 9 Jul 2011 07:20:34 +0000 (00:20 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 11 Jul 2011 17:53:28 +0000 (10:53 -0700)
commit7304909d6537e00252347a10d0bae54ffd77ff91
tree8800ef4f4233335d259a8fda7b70f48beae2cb4e
parent186e37c75454965e1a58298e878a9585f4866749
glsl: Reject ambiguous function calls (multiple inexact matches).

According to the GLSL 1.20 specification, "it is a semantic error if
there are multiple ways to apply [implicit] conversions [...] such that
the call can be made to match multiple signatures."

Fixes a regression caused by 60eb63a855cb89962f2d5bb91e238ff2d1ab8702,
which implemented the wrong policy of finding a "closest" match.
However, this is not a revert, since the original code failed to
continue looking for an exact match once it found two inexact matches.

It's OK to have multiple inexact matches if there's also an exact match.

NOTE: This is a candidate for the 7.10 and 7.11 branches.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38971
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/ir_function.cpp