[erlang-questions] Compiler and tautologies

Michal Ptaszek michal.ptaszek@REDACTED
Thu Mar 19 09:09:22 CET 2009


Hi!

I suppose it does so. Let's check it out:

f() ->
    case test of
	test ->
	    ok
    end.

f2() ->
    ok.

Then try to compile it to the assembler code:
 compile:file("test", ['S']).
{ok,test}

And check out the test.S file:
{function, f, 0, 2}.
  {label,1}.
    {func_info,{atom,test},{atom,f},0}.
  {label,2}.
    {move,{atom,ok},{x,0}}.
    return.


{function, f2, 0, 4}.
  {label,3}.
    {func_info,{atom,test},{atom,f2},0}.
  {label,4}.
    {move,{atom,ok},{x,0}}.
    return.

The functions' bodies are exactly the same.


----- "Adam Lindberg" <adam@REDACTED> wrote:

> Hi!
> 
> Does the Erlang compiler optimize code such as:
> 
> f() -> case true of true -> ok end.
> 
> To this?
> 
> f() -> ok.
> 
> 
> I'm working with Erlang code generation in a customer's product and I
> wonder if I need to optimize away such code myself or not.
> 
> 
> Cheers,
> Adam

Regards,
-- 
Michal Ptaszek
www.erlang-consulting.com



More information about the erlang-questions mailing list