We propose a new approach, namely Optimized Embedded Signature Monitoring (OESM) to perform on-line control-flow fault detection. The underlined advantage of this approach is the ability to perform a profiling algorithm that analyses the control-flow graph of user program in order to optimize the number of checkpoints (i.e., signatures) to be inserted along with the application code. By optimization, we mean to find, for a given application, the best trade-off between the minimum number of signatures to be inserted in the code, for the maximum fault detection coverage, with the minimum impact in terms of power increase. The embedded signatures are checked at runtime by the processor against compilation-time pre-computed values every time the processor reaches these signature points. Practical experiments have been carried out to demonstrate the OESM benefits when compared to conventional control-flow fault detection approaches.