diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2015-10-29 23:03:42 +0000 |
---|---|---|
committer | Sergei Trofimovich <siarheit@google.com> | 2015-10-29 23:03:52 +0000 |
commit | e272ab99f60884e5c510c9597fbdb1a570eedcaa (patch) | |
tree | 6a09fdec3d2a564483d4fb4b42ee8a3968e0346a | |
parent | bbaf76f949426c91d6abbbc5eced1f705530087b (diff) | |
download | haskell-e272ab99f60884e5c510c9597fbdb1a570eedcaa.tar.gz |
x86 codegen: don't generate location comments
The following source snippet 'module A where x */* y = 42'
when being compiled with '-g' option emits syntactically
invalid comment for GNU as:
.text
.align 8
.loc 1 3 1 /* */* */
Fixed by not emitting comments at all. We already suppress
all asm comments in 'X86/Ppr.hs'.
Signed-off-by: Sergei Trofimovich <siarheit@google.com>
Test Plan: added test and check it works
Reviewers: scpmw, simonmar, austin, bgamari
Reviewed By: simonmar
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1386
GHC Trac Issues: #10667
-rw-r--r-- | compiler/nativeGen/X86/Ppr.hs | 5 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_compile/T10667.hs | 6 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_compile/all.T | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/compiler/nativeGen/X86/Ppr.hs b/compiler/nativeGen/X86/Ppr.hs index ce63caed6b..0c9507ab28 100644 --- a/compiler/nativeGen/X86/Ppr.hs +++ b/compiler/nativeGen/X86/Ppr.hs @@ -506,9 +506,8 @@ pprInstr (COMMENT _) = empty -- nuke 'em pprInstr (COMMENT s) = ptext (sLit "# ") <> ftext s -} -pprInstr (LOCATION file line col name) - = ptext (sLit "\t.loc ") <> ppr file <+> ppr line <+> ppr col <> - ptext (sLit " /* ") <> text name <> ptext (sLit " */") +pprInstr (LOCATION file line col _name) + = ptext (sLit "\t.loc ") <> ppr file <+> ppr line <+> ppr col pprInstr (DELTA d) = pprInstr (COMMENT (mkFastString ("\tdelta = " ++ show d))) diff --git a/testsuite/tests/codeGen/should_compile/T10667.hs b/testsuite/tests/codeGen/should_compile/T10667.hs new file mode 100644 index 0000000000..665c764099 --- /dev/null +++ b/testsuite/tests/codeGen/should_compile/T10667.hs @@ -0,0 +1,6 @@ +module A where + +-- when used with '-g' debug generation option +-- '*/*' leaked into a /* comment */ and broke +-- GNU as. +x */* y = 42 diff --git a/testsuite/tests/codeGen/should_compile/all.T b/testsuite/tests/codeGen/should_compile/all.T index d4e12fc903..a8ca738298 100644 --- a/testsuite/tests/codeGen/should_compile/all.T +++ b/testsuite/tests/codeGen/should_compile/all.T @@ -31,3 +31,4 @@ test('debug', extra_clean(['debug.cmm']), ['$MAKE -s --no-print-directory debug']) test('T9964', normal, compile, ['-O']) test('T10518', [cmm_src], compile, ['']) +test('T10667', normal, compile, ['-g']) |