【发布时间】:2015-11-03 15:07:18
【问题描述】:
假设以下函数存在于静态库(*.a、*.lib)中:
int func_foo(int i) {
switch (i) {
case 1:
return foo_bar();
case 2:
return foo_baz();
case 3:
return foo_bat();
default:
return -1;
}
}
如果这个库的用户调用这个函数并且只传入1,编译器会(或可以)删除对2和3的调用吗?
如果foo_baz() 和foo_bat() 函数没有在任何其他函数中引用(也就是死代码消除),编译器是否也会删除它们?
【问题讨论】:
-
“这个库的用户”如何摄取库?引用源代码或一些现成的二进制文件?
-
假设它是一个已编译的静态库(例如 *.a 或等效的)。
标签: c compiler-optimization c99 dead-code