diff mbox

drivers/video/fbdev/sis/sis_main.c: avoid repeated strlen() calls

Message ID 1433855066-20260-1-git-send-email-linux@rasmusvillemoes.dk (mailing list archive)
State New, archived
Headers show

Commit Message

Rasmus Villemoes June 9, 2015, 1:04 p.m. UTC
gcc is not smart enough to realize that strlen(strbuf1) cannot be
changed by the loop body, so it is forced to recompute it, at least in
the branch containing the assignment. Avoid this by using an
equivalent stopping condition.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
 drivers/video/fbdev/sis/sis_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Tomi Valkeinen June 12, 2015, 9:36 a.m. UTC | #1
On 09/06/15 16:04, Rasmus Villemoes wrote:
> gcc is not smart enough to realize that strlen(strbuf1) cannot be
> changed by the loop body, so it is forced to recompute it, at least in
> the branch containing the assignment. Avoid this by using an
> equivalent stopping condition.

Does it matter? Is sisfb calling sisfb_search_mode thousands of times?

 Tomi
diff mbox

Patch

diff --git a/drivers/video/fbdev/sis/sis_main.c b/drivers/video/fbdev/sis/sis_main.c
index fcf610edf217..ea95f8bf3922 100644
--- a/drivers/video/fbdev/sis/sis_main.c
+++ b/drivers/video/fbdev/sis/sis_main.c
@@ -172,7 +172,7 @@  static void sisfb_search_mode(char *name, bool quiet)
 
 	if(strlen(name) <= 19) {
 		strcpy(strbuf1, name);
-		for(i = 0; i < strlen(strbuf1); i++) {
+		for(i = 0; strbuf1[i]; i++) {
 			if(strbuf1[i] < '0' || strbuf1[i] > '9') strbuf1[i] = ' ';
 		}