[GASPP,2/2] Don't match whitespace as branch condition codes

Message ID 1539983907-24802-1-git-send-email-martin@martin.st
State New
Headers show
Series
  • Untitled series #153
Related show

Commit Message

Martin Storsjö Oct. 19, 2018, 9:18 p.m.
For cases like "b    1b", this could previously be matched as
$cond = "  ".

This fixes preprocessing with a preprocessor that preserves multiple
consecutive spaces, like cl.exe does.
---
Better fix, which also works in a number of cases where the previous
version failed.
---
 gas-preprocessor.pl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Luca Barbato Oct. 22, 2018, 3:39 p.m. | #1
On 19/10/2018 23:18, Martin Storsjo wrote:
> For cases like "b    1b", this could previously be matched as
> $cond = "  ".
> 
> This fixes preprocessing with a preprocessor that preserves multiple
> consecutive spaces, like cl.exe does.
> ---
> Better fix, which also works in a number of cases where the previous
> version failed.
> ---
>  gas-preprocessor.pl | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gas-preprocessor.pl b/gas-preprocessor.pl
> index b22ee8a..c42412f 100755
> --- a/gas-preprocessor.pl
> +++ b/gas-preprocessor.pl
> @@ -879,7 +879,7 @@ sub handle_serialized_line {
>  
>  
>          # Check branch instructions
> -        if ($line =~ /(?:^|\n)\s*(\w+\s*:\s*)?(bl?x?\.?(..)?(\.w)?)\s+(\w+)/) {
> +        if ($line =~ /(?:^|\n)\s*(\w+\s*:\s*)?(bl?x?\.?([^\s]{2})?(\.w)?)\s+(\w+)/) {
>              my $instr = $2;
>              my $cond = $3;
>              my $width = $4;
> 

Looks fine.
Janne Grunau Oct. 22, 2018, 6:03 p.m. | #2
On 2018-10-20 00:18:27 +0300, Martin Storsjö wrote:
> For cases like "b    1b", this could previously be matched as
> $cond = "  ".
> 
> This fixes preprocessing with a preprocessor that preserves multiple
> consecutive spaces, like cl.exe does.
> ---
> Better fix, which also works in a number of cases where the previous
> version failed.
> ---
>  gas-preprocessor.pl | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gas-preprocessor.pl b/gas-preprocessor.pl
> index b22ee8a..c42412f 100755
> --- a/gas-preprocessor.pl
> +++ b/gas-preprocessor.pl
> @@ -879,7 +879,7 @@ sub handle_serialized_line {
>  
>  
>          # Check branch instructions
> -        if ($line =~ /(?:^|\n)\s*(\w+\s*:\s*)?(bl?x?\.?(..)?(\.w)?)\s+(\w+)/) {
> +        if ($line =~ /(?:^|\n)\s*(\w+\s*:\s*)?(bl?x?\.?([^\s]{2})?(\.w)?)\s+(\w+)/) {
>              my $instr = $2;
>              my $cond = $3;
>              my $width = $4;

both ok

Janne

Patch

diff --git a/gas-preprocessor.pl b/gas-preprocessor.pl
index b22ee8a..c42412f 100755
--- a/gas-preprocessor.pl
+++ b/gas-preprocessor.pl
@@ -879,7 +879,7 @@  sub handle_serialized_line {
 
 
         # Check branch instructions
-        if ($line =~ /(?:^|\n)\s*(\w+\s*:\s*)?(bl?x?\.?(..)?(\.w)?)\s+(\w+)/) {
+        if ($line =~ /(?:^|\n)\s*(\w+\s*:\s*)?(bl?x?\.?([^\s]{2})?(\.w)?)\s+(\w+)/) {
             my $instr = $2;
             my $cond = $3;
             my $width = $4;