https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65292
Bug ID: 65292 Summary: Template function not emitted Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: raj.khem at gmail dot com Created attachment 34932 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34932&action=edit testcase Attached code from webkit, shows that when compiling it for arm with gcc -O2, a function goes missing in the object file case NonArrayWithInt32: case ArrayWithInt32: { putByIndexBeyondVectorLengthWithoutAttributes<Int32Shape>(exec, i, value); break; } case NonArrayWithDouble: case ArrayWithDouble: { putByIndexBeyondVectorLengthWithoutAttributes<DoubleShape>(exec, i, value); break; } case NonArrayWithContiguous: case ArrayWithContiguous: { putByIndexBeyondVectorLengthWithoutAttributes<ContiguousShape>(exec, i, value); break; } Out of those calls, putByIndexBeyondVectorLengthWithoutAttributes<Int32Shape> is not emitted into .s file, when compiled with -O1 the function is emitted This problem is not happening on 4.8.x or 4.9.x gcc-5.0 - O2 ============== readelf -sW JSObject.o | c++filt | grep putByIndexBeyondVectorLengthWithoutAttributes 298: 00000000 284 FUNC WEAK HIDDEN 43 void JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes<(unsigned char)22>(JSC::ExecState*, unsigned int, JSC::JSValue) 300: 00000000 264 FUNC WEAK HIDDEN 45 void JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes<(unsigned char)26>(JSC::ExecState*, unsigned int, JSC::JSValue) gcc-5.0 - O1 ============ readelf -sW a.o | c++filt | grep putByIndexBeyondVectorLengthWithoutAttributes 505: 00000000 224 FUNC WEAK DEFAULT 128 void JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes<(unsigned char)20>(JSC::ExecState*, unsigned int, JSC::JSValue) 507: 00000000 252 FUNC WEAK DEFAULT 138 void JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes<(unsigned char)22>(JSC::ExecState*, unsigned int, JSC::JSValue) 510: 00000000 224 FUNC WEAK DEFAULT 147 void JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes<(unsigned char)26>(JSC::ExecState*, unsigned int, JSC::JSValue) version I am at is gcc version 5.0.0 20150301 (experimental) (GCC)