ObjFW  Check-in [5c0117205d]

Overview
Comment:Work around an ICE in Clang 3.7.0 on Windows/x86

Apparently the optimizer crashes on some recursive functions.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 5c0117205db63ff0c681ff3554f49885010e1163eab6aed766baa26b826501fd
User & Date: js on 2022-11-06 21:19:39
Other Links: manifest | tags
Context
2022-11-06
21:24
OFIPXSocketTests: Do not compare sender network check-in: af0f8118d0 user: js tags: trunk
21:19
Work around an ICE in Clang 3.7.0 on Windows/x86 check-in: 5c0117205d user: js tags: trunk
20:36
Rename OFIPSocketAsyncConnector check-in: 24ff63b586 user: js tags: trunk
Changes

Modified src/OFMethodSignature.m from [e6d0a405ec] to [9c702fcecb].

142
143
144
145
146
147
148




149
150
151
152
153
154
155
	(*type)++;
	(*length)--;

	return alignment;
}

static size_t




alignmentOfEncoding(const char **type, size_t *length, bool inStruct)
{
	size_t alignment;

	if (*length == 0)
		@throw [OFInvalidFormatException exception];








>
>
>
>







142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
	(*type)++;
	(*length)--;

	return alignment;
}

static size_t
#if defined(__clang__) && __clang_major__ == 3 && __clang_minor__ <= 7
/* Work around an ICE in Clang 3.7.0 on Windows/x86 */
__attribute__((__optnone__))
#endif
alignmentOfEncoding(const char **type, size_t *length, bool inStruct)
{
	size_t alignment;

	if (*length == 0)
		@throw [OFInvalidFormatException exception];

Modified src/runtime/class.m from [bcbf47b312] to [4cb79aa414].

776
777
778
779
780
781
782




783
784
785
786
787
788
789

	class->methodList = methodList;

	objc_updateDTable(class);
}

Method




class_getInstanceMethod(Class class, SEL selector)
{
	Method method;
	Class superclass;

	if (class == Nil)
		return NULL;







>
>
>
>







776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793

	class->methodList = methodList;

	objc_updateDTable(class);
}

Method
#if defined(__clang__) && __clang_major__ == 3 && __clang_minor__ <= 7
/* Work around an ICE in Clang 3.7.0 on Windows/x86 */
__attribute__((__optnone__))
#endif
class_getInstanceMethod(Class class, SEL selector)
{
	Method method;
	Class superclass;

	if (class == Nil)
		return NULL;