Design and Implementation of an LLVM Optimization Pass for the Recognition of Code Idioms