[project @ 2001-03-14 10:16:19 by rrt]
[ghc-hetmet.git] / ghc / driver / split / ghc-split.lprl
index 7d0fa6e..3fe2b81 100644 (file)
@@ -45,7 +45,7 @@ sub split_asm_file {
 #      if $prologue_stuff eq $s_stuff;
 
     # lie about where this stuff came from
-    $prologue_stuff =~ s|"/tmp/ghc\d+\.c"|"$ifile_root\.hc"|g;
+    $prologue_stuff =~ s|"${Tmp_prefix}\.c"|"$ifile_root\.hc"|g;
 
     while ( $_ ne '' ) { # not EOF
        $octr++;
@@ -290,7 +290,7 @@ sub process_asm_block_iX86 {
     $str = "\.text\n\t.align 4\n" . $str;
 
     # remove/record any literal constants defined here
-    while ( ($str =~ /(\.?(LC\d+):\n\t\.(ascii|string).*\n)/ )) {
+    while ( ($str =~ /(\.?(LC\d+):\n(\t\.(ascii|string).*\n|\.byte.*\n)+)/ )) {
        local($label) = $2;
        local($body)  = $1;
 
@@ -299,7 +299,7 @@ sub process_asm_block_iX86 {
 
        $LocalConstant{$label} = $body;
        
-       $str =~ s/\.?LC\d+:\n\t\.(ascii|string).*\n//;
+       $str =~ s/\.?LC\d+:\n(\t\.(ascii|string).*\n|\.byte.*\n)+//;
     }
 
     # inject definitions for any local constants now used herein
@@ -333,6 +333,8 @@ sub process_asm_block_hppa {
     while ( $str =~ /^(\s+\.align.*\n(L\$C\d+)\n(\s.*\n)+); end literal\n/ ) {
        local($label) = $2;
        local($body)  = $1;
+       local($prefix) = $`;
+       local($suffix) = $';
        $label =~ s/\$/\\\$/g;
 
        &tidy_up_and_die(1,"Local constant label $label already defined!\n")
@@ -340,7 +342,7 @@ sub process_asm_block_hppa {
 
        $LocalConstant{$label} = "\t.SPACE \$TEXT\$\n\t.SUBSPA \$LIT\$\n\n" . $body;
        
-       $str =~ s/^\s+\.SPACE \$TEXT\$\n\s+\.SUBSPA \$LIT\$\s+\.align.*\nL\$C\d+\n(\s.*\n)+; end literal\n//;
+       $str = $prefix . $suffix;
     }
 
     # inject definitions for any local constants now used herein