From dc97951402b499023ce877dd2438bce0840b2c26 Mon Sep 17 00:00:00 2001 From: Alex Dowad Date: Fri, 2 Oct 2015 13:32:33 +0200 Subject: fix instruction matching errors in i386 CFI generation fdiv and fmul instructions were wrongly matched by the rules for integer div and mul instructions, leading to incorrect conclusions about register values being clobbered. --- tools/add-cfi.i386.awk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'tools') diff --git a/tools/add-cfi.i386.awk b/tools/add-cfi.i386.awk index b8bdd7f4..5dc87941 100644 --- a/tools/add-cfi.i386.awk +++ b/tools/add-cfi.i386.awk @@ -188,9 +188,9 @@ function trashed(register) { /(add|addl|sub|subl|and|or|xor|lea|sal|sar|shl|shr) %e(ax|bx|cx|dx|si|di|bp),/ { trashed(get_reg1()) } -/i?mul [^,]*$/ { trashed("eax"); trashed("edx") } -/i?mul %e(ax|bx|cx|dx|si|di|bp),/ { trashed(get_reg1()) } -/i?div/ { trashed("eax"); trashed("edx") } +/^i?mul [^,]*$/ { trashed("eax"); trashed("edx") } +/^i?mul %e(ax|bx|cx|dx|si|di|bp),/ { trashed(get_reg1()) } +/^i?div/ { trashed("eax"); trashed("edx") } /(dec|inc|not|neg|pop) %e(ax|bx|cx|dx|si|di|bp)/ { trashed(get_reg()) } /cpuid/ { trashed("eax"); trashed("ebx"); trashed("ecx"); trashed("edx") } -- cgit v1.2.1