This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH 0/3] Extend -falign-FOO=N to N[,M[,N2[,M2]]] version 7
- From: Denys Vlasenko <dvlasenk at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Denys Vlasenko <dvlasenk at redhat dot com>, Andrew Pinski <pinskia at gmail dot com>, Uros Bizjak <ubizjak at gmail dot com>, Bernd Schmidt <bschmidt at redhat dot com>
- Date: Mon, 17 Apr 2017 17:57:13 +0200
- Subject: [PATCH 0/3] Extend -falign-FOO=N to N[,M[,N2[,M2]]] version 7
- Authentication-results: sourceware.org; auth=none
- Authentication-results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
- Authentication-results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dvlasenk at redhat dot com
- Dkim-filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 0CFCF804E4
- Dmarc-filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0CFCF804E4
These patches are for this bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66240
"RFE: extend -falign-xyz syntax"
An extended explanation is in commit message of patch 3.
The test program:
int g();
int f(int i) {
i *= 3;
while (--i > 100) {
L1: if (g()) goto L1;
if (g()) goto L2;
}
return i;
L2: return 123;
}
"-O2" assembly before the patch: After the patch:
.text .text
.p2align 4,,15 .p2align 4
.globl f .globl f
.type f, @function .type f, @function
f: f:
.LFB0: .LFB0:
pushq %rbx pushq %rbx
leal (%rdi,%rdi,2), %ebx leal (%rdi,%rdi,2), %ebx
.p2align 4,,10 .p2align 4,,10
.p2align 3 .p2align 3
.L2: .L2:
subl $1, %ebx subl $1, %ebx
cmpl $100, %ebx cmpl $100, %ebx
jle .L1 jle .L1
.p2align 4,,10 .p2align 4,,10
.p2align 3 .p2align 3
.L3: .L3:
xorl %eax, %eax xorl %eax, %eax
call g call g
testl %eax, %eax testl %eax, %eax
jne .L3 jne .L3
call g call g
testl %eax, %eax testl %eax, %eax
je .L2 je .L2
movl $123, %ebx movl $123, %ebx
.L4: .L4:
.L1: .L1:
movl %ebx, %eax movl %ebx, %eax
popq %rbx popq %rbx
ret ret
This is version 7 of the patch set.
Changes since version 6:
* Rediffed to accomodate changes introduced by recently introduced
-flimit-function-alignment
Changes since version 5:
* Changes in rs6000, mips, alpha, visium, sh, rx, spu to accomodate
new alignment options.
* Explicitly list secondary alignment of 8 ("n,m,8") in x86 tables
for all types of jump targets.
Changes since version 4:
* Deleted rather than NOPed -malign-foo=N support.
* Improved behavior match with x86 8-byte subalignment for labels.
Changes since version 3:
* Improved documentation in invoke.texi
* Fixed x86-specific calculation of default N2 value:
previous version was doing it incorrectly for cross-compile