Mercury Bugs - mercury
View Issue Details
0000307mercuryBugpublic2014-01-06 22:322014-01-10 15:58
Assigned Tojuliensf 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0000307: internal compiler error in assign_by_spills during make install of mercury
Descriptionmake install fails with

  mercury_ho_call.c: In function ‘MR_generic_unify’:
  mercury_ho_call.c:721:1: internal compiler error: in assign_by_spills, at lra-assigns.c:1281

at my site.

This happens with 13.05.x and 14.01. I may try more older versions to find the one introducing this behaviour. Just ask if this was helpful. Also if there's some investigation I can do or further information I can provide.
Steps To Reproduce  pkgdir=/tmp # or anything else

  ./configure --prefix=/usr --mandir=/usr/share/man \
              --infodir=/usr/share/info --disable-debug-grades \


  make INSTALL_PREFIX="$pkgdir"/usr \
       INSTALL_MAN_DIR="$pkgdir"/usr/share/man \
       INSTALL_INFO_DIR="$pkgdir"/usr/share/info \
       MERCURY_COMPILER="$pkgdir"/usr/bin/mercury_compile \
       MERCURY_CONFIG_DIR="$pkgdir"/usr/lib/mercury \
Additional Informationmessages surrounding above error:

  /var/build/build/mercury-compiler/src/mercury-srcdist-13.05.2/install_grade_dir.asm_fast.gc/scripts/mgnuc --grade asm_fast.gc --c-debug --no-ansi -- -fpic -DMR_PIC \
      -c mercury_hgc.c -o mercury_hgc.pic_o
  /var/build/build/mercury-compiler/src/mercury-srcdist-13.05.2/install_grade_dir.asm_fast.gc/scripts/mgnuc --grade asm_fast.gc --c-debug --no-ansi -- -fpic -DMR_PIC \
      -c mercury_ho_call.c -o mercury_ho_call.pic_o
  mercury_ho_call.c: In function ‘MR_generic_unify’:
  mercury_ho_call.c:721:1: internal compiler error: in assign_by_spills, at lra-assigns.c:1281
  Please submit a full bug report,
  with preprocessed source if appropriate.
  See <> for instructions.
  /tmp/mmake.GoLNnI:1599: recipe for target 'mercury_ho_call.pic_o' failed
  make[2]: *** [mercury_ho_call.pic_o] Error 1
  make[2]: Leaving directory '/var/build/build/mercury-compiler/src/mercury-srcdist-13.05.2/install_grade_dir.asm_fast.gc/runtime'
  To clean up from failed install, remove /var/build/build/mercury-compiler/src/mercury-srcdist-13.05.2/install_grade_dir.asm_fast.gc
  /tmp/mmake.GMvojB:1408: recipe for target 'install_grades' failed
  make[1]: *** [install_grades] Error 1
  make[1]: Leaving directory '/var/build/build/mercury-compiler/src/mercury-srcdist-13.05.2'
  Makefile:37: recipe for target 'install' failed
  make: *** [install] Error 2
TagsNo tags attached.
Attached Files

2014-01-06 22:36   
What C compiler, version of the C compiler and platform are you using?
2014-01-06 23:59   
Sorry, I knew I missed something

It's i686 GNU/Linux 3.12.6, gcc 4.8.2

As a distribution I'm using Arch Linux and their build system (makepkg) but yes, I tried to build by hand.
2014-01-08 16:20   
The underlying issue here is a bug in GCC. (Unfortunately many GCC optimisations have a history of not working terribly well in the presence of the global register variables extension used by Mercury.)

As a workaround I suggest you configure using the option: --with-llds-base-grade=none
This will disable the use of any GCC extensions to C.

We will look into seeing if there is an alternative workaround available.
2014-01-10 15:58   
Workaround applied in the mgnuc script.

Issue History
2014-01-06 22:32bacuhNew Issue
2014-01-06 22:36juliensfNote Added: 0000591
2014-01-06 22:36juliensfAssigned To => juliensf
2014-01-06 22:36juliensfStatusnew => feedback
2014-01-06 23:59bacuhNote Added: 0000592
2014-01-06 23:59bacuhStatusfeedback => assigned
2014-01-08 16:20juliensfNote Added: 0000599
2014-01-08 16:20juliensfStatusassigned => confirmed
2014-01-10 15:58juliensfNote Added: 0000600
2014-01-10 15:58juliensfStatusconfirmed => resolved
2014-01-10 15:58juliensfResolutionopen => fixed