Jump to content
Sign in to follow this  
richard_s

Inconsistent Code Generation

Recommended Posts

Extraneous code generated for the logically identical 'if' statements in:

 

#include <system.h>

#define FIVE 5
#define FOUR 4

unsigned char thing;


void main()
{
if (thing > FIVE)
	thing = 0;
if (thing > (FOUR+1))
	thing = 0;
}

 

Generated code:

 

; { main; function begin
BCF STATUS, RP0
BCF STATUS, RP1
MOVF gbl_thing, W
SUBLW 0x05
BTFSS STATUS,C
CLRF gbl_thing
MOVF gbl_thing, W
SUBLW 0x05
MOVLW 0x00      // ?????
XORLW 0x00      // ?????
BTFSC STATUS,C
RETURN
BTFSC STATUS,Z  // ?????
CLRF gbl_thing
RETURN
; } main function end

 

Does not appear to be target-dependent.

 

 

richard.

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...