fbe51a
commit cbca67dae5722d65590e33b8b885a561ac3fff5d
fbe51a
Author: William Cohen <wcohen@redhat.com>
fbe51a
Date:   Tue Jun 15 21:48:15 2021 -0400
fbe51a
fbe51a
    Use numeric local labels to allow compilation with LTO enabled
fbe51a
    
fbe51a
    Some assembly snippets in instructions_testcode.c used regular label
fbe51a
    names.  Unfortunately, when multiple copies of the snippets are
fbe51a
    inlined in different places with LTO enabled the multiple copies of a
fbe51a
    label by the same name cause the build to fail because of the
fbe51a
    redefinition of the label.  To avoid this problem all those labels
fbe51a
    have been converted to numeric local labels to allow multiple copies
fbe51a
    to peacefully coexist in the LTO enabled code.
fbe51a
fbe51a
diff --git a/src/validation_tests/instructions_testcode.c b/src/validation_tests/instructions_testcode.c
fbe51a
index 3634b1f90..128127c25 100644
fbe51a
--- a/src/validation_tests/instructions_testcode.c
fbe51a
+++ b/src/validation_tests/instructions_testcode.c
fbe51a
@@ -10,9 +10,9 @@ int instructions_million(void) {
fbe51a
 #if defined(__i386__) || (defined __x86_64__)
fbe51a
 	asm(	"	xor	%%ecx,%%ecx\n"
fbe51a
 		"	mov	$499999,%%ecx\n"
fbe51a
-		"test_loop:\n"
fbe51a
+		"55:\n"
fbe51a
 		"	dec	%%ecx\n"
fbe51a
-		"	jnz	test_loop\n"
fbe51a
+		"	jnz	55b\n"
fbe51a
 		: /* no output registers */
fbe51a
 		: /* no inputs */
fbe51a
 		: "cc", "%ecx" /* clobbered */
fbe51a
@@ -47,9 +47,9 @@ int instructions_million(void) {
fbe51a
 #elif defined(__sparc__)
fbe51a
 	asm(	"	sethi	%%hi(333333), %%l0\n"
fbe51a
 		"	or	%%l0,%%lo(333333),%%l0\n"
fbe51a
-		"test_loop:\n"
fbe51a
+		"55:\n"
fbe51a
 		"	deccc	%%l0		! decrement count\n"
fbe51a
-		"	bnz	test_loop	! repeat until zero\n"
fbe51a
+		"	bnz	55b		! repeat until zero\n"
fbe51a
 		"	nop			! branch delay slot\n"
fbe51a
 		: /* no output registers */
fbe51a
 		: /* no inputs */
fbe51a
@@ -57,13 +57,13 @@ int instructions_million(void) {
fbe51a
 	);
fbe51a
 	return 0;
fbe51a
 #elif defined(__arm__)
fbe51a
-	asm(	"	ldr	r2,count	@ set count\n"
fbe51a
-		"	b       test_loop\n"
fbe51a
-		"count:	.word 333332\n"
fbe51a
-		"test_loop:\n"
fbe51a
+	asm(	"	ldr	r2,42f		@ set count\n"
fbe51a
+		"	b       55f\n"
fbe51a
+		"42:	.word 333332\n"
fbe51a
+		"55:\n"
fbe51a
 		"	add	r2,r2,#-1\n"
fbe51a
 		"	cmp	r2,#0\n"
fbe51a
-		"	bne	test_loop	@ repeat till zero\n"
fbe51a
+		"	bne	55b		@ repeat till zero\n"
fbe51a
 		: /* no output registers */
fbe51a
 		: /* no inputs */
fbe51a
 		: "cc", "r2" /* clobbered */
fbe51a
@@ -71,10 +71,10 @@ int instructions_million(void) {
fbe51a
 	return 0;
fbe51a
 #elif defined(__aarch64__)
fbe51a
 	asm(	"	ldr	x2,=333332	// set count\n"
fbe51a
-		"test_loop:\n"
fbe51a
+		"55:\n"
fbe51a
 		"	add	x2,x2,#-1\n"
fbe51a
 		"	cmp	x2,#0\n"
fbe51a
-		"	bne	test_loop	// repeat till zero\n"
fbe51a
+		"	bne	55b		// repeat till zero\n"
fbe51a
 		: /* no output registers */
fbe51a
 		: /* no inputs */
fbe51a
 		: "cc", "r2" /* clobbered */
fbe51a
@@ -97,7 +97,7 @@ int instructions_fldcw(void) {
fbe51a
 	double three=3.0;
fbe51a
 
fbe51a
 	asm(	"	mov	$100000,%%ecx\n"
fbe51a
-		"big_loop:\n"
fbe51a
+		"44:\n"
fbe51a
 		"	fldl	%1		# load value onto fp stack\n"
fbe51a
 		"	fnstcw	%0		# store control word to mem\n"
fbe51a
 		"	movzwl	%0, %%eax	# load cw from mem, zero extending\n"
fbe51a
@@ -106,7 +106,7 @@ int instructions_fldcw(void) {
fbe51a
 		"	fldcw	%3		# save new rounding mode\n"
fbe51a
 		"	fistpl	%2		# save stack value as integer to mem\n"
fbe51a
 		"	fldcw	%0		# restore old cw\n"
fbe51a
-		"	loop	big_loop	# loop to make the count more obvious\n"
fbe51a
+		"	loop	44b		# loop to make the count more obvious\n"
fbe51a
 		: /* no output registers */
fbe51a
 		: "m"(saved_cw), "m"(three), "m"(result), "m"(cw) /* inputs */
fbe51a
 		: "cc", "%ecx","%eax" /* clobbered */
fbe51a
@@ -129,13 +129,13 @@ int instructions_rep(void) {
fbe51a
 
fbe51a
 	asm(	"	mov	$1000,%%edx\n"
fbe51a
 		"	cld\n"
fbe51a
-		"loadstore:			# test 8-bit store\n"
fbe51a
+		"66:				# test 8-bit store\n"
fbe51a
 		"	mov	$0xd, %%al	# set eax to d\n"
fbe51a
 		"	mov	$16384, %%ecx\n"
fbe51a
 		"	mov	%0, %%edi	# set destination\n"
fbe51a
 		"	rep	stosb		# store d 16384 times, auto-increment\n"
fbe51a
 		"	dec	%%edx\n"
fbe51a
-		"	jnz	loadstore\n"
fbe51a
+		"	jnz	66b\n"
fbe51a
 		: /* outputs */
fbe51a
 		: "rm" (buffer_out) /* inputs */
fbe51a
 		: "cc", "%esi","%edi","%edx","%ecx","%eax","memory" /* clobbered */
fbe51a
@@ -147,13 +147,13 @@ int instructions_rep(void) {
fbe51a
 
fbe51a
 	asm(	"	mov	$1000,%%edx\n"
fbe51a
 		"	cld\n"
fbe51a
-		"loadstore:			# test 8-bit store\n"
fbe51a
+		"66:				# test 8-bit store\n"
fbe51a
 		"	mov	$0xd, %%al	# set eax to d\n"
fbe51a
 		"	mov	$16384, %%ecx\n"
fbe51a
 		"	mov	%0, %%rdi	# set destination\n"
fbe51a
 		"	rep	stosb		# store d 16384 times, auto-increment\n"
fbe51a
 		"	dec	%%edx\n"
fbe51a
-		"	jnz	loadstore\n"
fbe51a
+		"	jnz	66b\n"
fbe51a
 		: /* outputs */
fbe51a
 		: "rm" (buffer_out) /* inputs */
fbe51a
 		: "cc", "%esi","%edi","%edx","%ecx","%eax","memory" /* clobbered */