This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/81540] New: tree-switch-conversion leads to code bloat
- From: "gjl at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 24 Jul 2017 19:38:06 +0000
- Subject: [Bug tree-optimization/81540] New: tree-switch-conversion leads to code bloat
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81540
Bug ID: 81540
Summary: tree-switch-conversion leads to code bloat
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: gjl at gcc dot gnu.org
Target Milestone: ---
Created attachment 41821
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41821&action=edit
cswtch.c: C test case
The following code gets blown by tree-switch-conversion by a factor of 4:
typedef __UINT64_TYPE__ T;
T func64 (int i)
{
T x = (T) -1;
switch (i)
{
case 1: x = 2; break;
case 2: x = 2; break;
case 25: x = 0x12345678abcd; break;
default: break;
}
return x;
}
$ avr-gcc cswtch.c -Os -c -fno-ident
$ avr-size -A cswtch.o
cswtch.o :
section size addr
.text 62 0
.rodata 200 0
Total 262
$ avr-gcc cswtch.c -Os -c -fno-ident -fno-tree-switch-conversion
$ avr-size -A cswtch.o
cswtch.o :
section size addr
.text 66 0
Total 66
Compiler sources are v8 trunk from around 2017-07-18
Target: avr
Configured with: ../../gcc.gnu.org/trunk/configure --target=avr --disable-nls
--prefix=/local/gnu/install/gcc-8-avr-mingw32 --host=i686-w64-mingw32
--build=x86_64-linux-gnu --enable-languages=c,c++,lto --with-gnu-as
--with-gnu-ld --disable-shared --with-dwarf2 --enable-checking=release