In this paper, we propose a new technique to improve the efficiency of control-flow checking for detecting soft-errors in embedded software. The novelties of the proposed technique are as follows: (1) the frequency of used variables and the frequency of the execution of basic blocks are used as two parameters for selecting important variables and basic blocks, (2) kernel blocks (i.e., a subset of the program’s flowgraph vertices) are used for the selection of important basic blocks, and (3) using the proposed method, developers can make a trade-off between the detection latency and the performance overheads. The experimental evaluations using several benchmarks showed that the execution time in the hardened code is less than the relationship signatures for control flow checking (RSCFC) method, while the memory overhead and code size remains nearly the same. The execution time of the hardened code also remains nearly the same as the original code.