Is a branched discard to be avoided
You can use a stencil instead, This allows the gpu to do an early out test before the fragment shader even starts.

You only have to build the stencil once (possibly with a discard in a simple shader) and you can reuse the stencil in future draws.