New API strictaliasing() with GCC support

This commit is contained in:
Jason Perkins 2014-11-04 18:25:32 -05:00
parent 5899a7f34b
commit 60fc6d2897
3 changed files with 47 additions and 0 deletions

View File

@ -630,6 +630,18 @@
tokens = true,
}
api.register {
name = "strictaliasing",
scope = "config",
kind = "string",
allowed = {
"Off",
"Level1",
"Level2",
"Level3",
}
}
api.register {
name = "system",
scope = "config",

View File

@ -51,6 +51,12 @@
if cfg.system ~= premake.WINDOWS then return "-fPIC" end
end,
},
strictaliasing = {
Off = "-fno-strict-aliasing",
Level1 = { "-fstrict-aliasing", "-Wstrict-aliasing=1" },
Level2 = { "-fstrict-aliasing", "-Wstrict-aliasing=2" },
Level3 = { "-fstrict-aliasing", "-Wstrict-aliasing=3" },
},
optimize = {
Off = "-O0",
On = "-O2",

View File

@ -402,3 +402,32 @@
test.isequal({ '-I"$(IntDir)/includes"' }, gcc.getincludedirs(cfg, cfg.includedirs))
end
--
-- Check handling of strict aliasing flags.
--
function suite.cflags_onNoStrictAliasing()
strictaliasing "Off"
prepare()
test.contains("-fno-strict-aliasing", gcc.getcflags(cfg))
end
function suite.cflags_onLevel1Aliasing()
strictaliasing "Level1"
prepare()
test.contains({ "-fstrict-aliasing", "-Wstrict-aliasing=1" }, gcc.getcflags(cfg))
end
function suite.cflags_onLevel2Aliasing()
strictaliasing "Level2"
prepare()
test.contains({ "-fstrict-aliasing", "-Wstrict-aliasing=2" }, gcc.getcflags(cfg))
end
function suite.cflags_onLevel3Aliasing()
strictaliasing "Level3"
prepare()
test.contains({ "-fstrict-aliasing", "-Wstrict-aliasing=3" }, gcc.getcflags(cfg))
end