GCC4 fixes, see bug #147388.
Patch from upstream SVN

--- a/trunk/drv_SimpleLCD.c (revision 547)
+++ b/trunk/drv_SimpleLCD.c (revision 581)
@@ -199,4 +202,5 @@
 {
     int rows = -1, cols = -1;
+    int value;
     unsigned int flags = 0;
     char *s;
@@ -210,7 +214,8 @@
     }
 
-    cfg_number(section, "BarCharValue", 0, 0, 255, &flags);
-    bar_char = flags;
-    cfg_number(section, "Options", 0, 0, 0xffff, &flags);
+    cfg_number(section, "BarCharValue", 0, 0, 255, &value);
+    bar_char = value;
+    cfg_number(section, "Options", 0, 0, 0xffff, &value);
+    flags = value;
     if (drv_generic_serial_open(section, Name, flags) < 0)
 	return -1;
Index: /trunk/lcd4linux_i2c.h
===================================================================
--- a/trunk/lcd4linux_i2c.h (revision 562)
+++ b/trunk/lcd4linux_i2c.h (revision 581)
@@ -79,5 +82,5 @@
 /* Transfer num messages.
  */
-extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[], int num);
+extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msg, int num);
 
 /*