Current (seen with hjl branch binutils 2.23.51.0.6 to 2.23.51.0.8) arm asm syntax checks may be a bit too strict. This is fine: vld1.32 {d1[]}, [r2], r3 But this whitespace change errors out: vld1.32 {d1[]}, [r2 ], r3 test.S:6: Error: ']' expected -- `vld1.32 {d1[]},[r2 ],r3' This causes problems when building x264 (context: .macro SAD_FUNC w, h, name, align:vararg vld1.32 {d1[]}, [r2 \align], r3 .endm called without the align parameter) The fix on the x264 side is easy, but chances are the behavior seen in older binutils versions (accepting both versions equally) is preferable.
CVSROOT: /cvs/src Module name: src Changes by: nickc@sourceware.org 2013-01-02 13:38:57 Modified files: gas : ChangeLog gas/config : tc-arm.c gas/testsuite : ChangeLog gas/testsuite/gas/arm: neon-ldst-es.d neon-ldst-es.s Added files: gas : ChangeLog-2012 gas/testsuite : ChangeLog-2012 Log message: PR gas/14987 * gas/arm/neon-ldst-es.s: Add whitespace test. * gas/arm/neon-ldst-es.d: Update expected disassembly. * config/tc-arm.c (parse_address_main): Skip whitespace before a closing bracket. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/ChangeLog-2012.diff?cvsroot=src&r1=NONE&r2=1.1 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/ChangeLog.diff?cvsroot=src&r1=1.4893&r2=1.4894 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-arm.c.diff?cvsroot=src&r1=1.549&r2=1.550 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/ChangeLog-2012.diff?cvsroot=src&r1=NONE&r2=1.1 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/ChangeLog.diff?cvsroot=src&r1=1.2161&r2=1.2162 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/arm/neon-ldst-es.d.diff?cvsroot=src&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/arm/neon-ldst-es.s.diff?cvsroot=src&r1=1.3&r2=1.4
Created attachment 6792 [details] skip whitespace
I have committed the uploaded patch in order to fix this problem. Cheers Nick
This bug is also present on current 2.23 branch, but not in the 2.23.1 release, making it a regression. Backporting the tc-arm.c patch to 2.23 fixes this test case there too. Please also see PR14887 for the analogous problem of whitespace between the opening bracket and the register operand.
CVSROOT: /cvs/src Module name: src Branch: binutils-2_23-branch Changes by: roland@sourceware.org 2013-06-24 23:35:22 Modified files: gas : ChangeLog gas/config : tc-arm.c gas/testsuite : ChangeLog gas/testsuite/gas/arm: neon-ldst-es.d neon-ldst-es.s Log message: gas/ PR gas/14987 * config/tc-arm.c (parse_address_main): Skip whitespace before a closing bracket. gas/testsuite/ PR gas/14987 * gas/arm/neon-ldst-es.s: Add whitespace test. * gas/arm/neon-ldst-es.d: Update expected disassembly. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.4769.2.31&r2=1.4769.2.32 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-arm.c.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.523.2.7&r2=1.523.2.8 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/ChangeLog.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.2057.2.32&r2=1.2057.2.33 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/arm/neon-ldst-es.d.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.8.1 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/arm/neon-ldst-es.s.diff?cvsroot=src&only_with_tag=binutils-2_23-branch&r1=1.3&r2=1.3.8.1
I've put that fix on the 2.23 branch too now.