+ ExprWithCheck (hie0, &Expr);
+ /* Load the result only if it is an lvalue and the type is
+ * marked as volatile. Otherwise the load is useless.
+ */
+ if (ED_IsLVal (&Expr) && IsQualVolatile (Expr.Type)) {
+ LoadExpr (CF_NONE, &Expr);
+ }
+ /* If the statement didn't generate code, and is not of type
+ * void, emit a warning.
+ */
+ GetCodePos (&End);
+ if (CodeRangeIsEmpty (&Start, &End) && !IsTypeVoid (Expr.Type)) {
+ Warning ("Statement has no effect");
+ }