An optimizing C front-end for hardware synthesis