tree 0e3fc94b7c5f4df60bcb1f9b267aea2ebe5c8a9b
parent 3470d592ce2df8affc9d1bb07a298811646c14a0
author Hanno Becker <hanno.becker@arm.com> 1550662229 +0000
committer Hanno Becker <hanno.becker@arm.com> 1561449625 +0100

Reduce code-size of mbedtls_x509_get_name()

Consider the following code-template:

   int beef();

   static int foo()
   {
        /* ... */
        ret = beef();
        if( ret != 0 )
           return( ret + HIGH_LEVEL );
        /* ... */
   }

   int bar()
   {
       /* ... */
       ret = foo();
       if( ret != 0 )
          ...
       /* ... */
   }

This leads to slightly larger code than expected, because when the
compiler inlines foo() into bar(), the sequence of return sequences
cannot be squashed, because compiler might not have knowledge that
the wrapping `ret + HIGH_LEVEL` of the return value of beef() doesn't
lead to foo() returning 0.

This can be avoided by performing error code wrapping in nested
functions calls at the top of the call chain.

This commit applies this slight optimization to mbedtls_x509_get_name().

It also moves various return statements into a single exit section,
again with the intend to save code.
