[M3commit] [modula3/cm3] 14cb0b: Fix a bug passing records by value in indirect cal...

GitHub noreply at github.com
Sun Nov 5 21:52:39 CET 2017

  Branch: refs/heads/master
  Home:   https://github.com/modula3/cm3
  Commit: 14cb0b59b638273fdcdad745d5d9a68980959e37
  Author: Rodney Bates <rodney.m.bates at acm.org>
  Date:   2017-11-05 (Sun, 05 Nov 2017)

  Changed paths:
    M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3

  Log Message:
  Fix a bug passing records by value in indirect calls.

For indirect calls, structs (static-sized records & arrays) passed
by value didn't get the llvm byval attribute, which causes llvm to
insert call-site copy.  Worked for direct calls.  Indirect calls
in cm3 IR do not have enough information to know when to add byval.

Changed to do away altogether with the byval attribute and instead
generate explicit call-site code to make the copy, in pop_struct.

More information about the M3commit mailing list