cgen: optimize out the empty #ifdef NOT_CURRENT_TARGET_OS #endif output
parent
6a5f49afb1
commit
53cbdbc2de
|
@ -6,6 +6,7 @@ module c
|
||||||
import os
|
import os
|
||||||
import v.ast
|
import v.ast
|
||||||
import v.util
|
import v.util
|
||||||
|
import v.pref
|
||||||
|
|
||||||
fn (mut g Gen) comptime_selector(node ast.ComptimeSelector) {
|
fn (mut g Gen) comptime_selector(node ast.ComptimeSelector) {
|
||||||
g.expr(node.left)
|
g.expr(node.left)
|
||||||
|
@ -188,6 +189,27 @@ fn (mut g Gen) comp_at(node ast.AtExpr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut g Gen) comp_if(node ast.IfExpr) {
|
fn (mut g Gen) comp_if(node ast.IfExpr) {
|
||||||
|
if !node.is_expr && !node.has_else && node.branches.len == 1 {
|
||||||
|
if node.branches[0].stmts.len == 0 {
|
||||||
|
// empty ifdef; result of target OS != conditional => skip
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !g.pref.output_cross_c {
|
||||||
|
if node.branches[0].cond is ast.Ident {
|
||||||
|
if g.pref.os == (pref.os_from_string(node.branches[0].cond.name) or {
|
||||||
|
pref.OS._auto
|
||||||
|
}) {
|
||||||
|
// Same target OS as the conditional...
|
||||||
|
// => skip the #if defined ... #endif wrapper
|
||||||
|
// and just generate the branch statements:
|
||||||
|
g.indent--
|
||||||
|
g.stmts(node.branches[0].stmts)
|
||||||
|
g.indent++
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
line := if node.is_expr {
|
line := if node.is_expr {
|
||||||
stmt_str := g.go_before_stmt(0)
|
stmt_str := g.go_before_stmt(0)
|
||||||
g.write(util.tabs(g.indent))
|
g.write(util.tabs(g.indent))
|
||||||
|
|
Loading…
Reference in New Issue