Exemple #1
0
def BytecodeToPollyCanonicalized(source: str) -> str:
    process = opt.Exec(["-polly-canonicalize", "-S", "-", "-o", "-"],
                       stdin=source)
    if process.returncode:
        raise opt.OptException("Error in canonicalization opt execution (%d)" %
                               process.returncode)
    return process.stdout
Exemple #2
0
def test_LlvmPipeline(tempdir: pathlib.Path):
  """End-to-end test."""
  with open(tempdir / "foo.c", "w") as f:
    f.write(
      """
int main() {
  int x = 0;
  if (x != 0)
    x = 5; // dead code
  return x;
}
"""
    )

  # Generate bytecode.
  p = clang.Exec(
    [
      str(tempdir / "foo.c"),
      "-o",
      str(tempdir / "foo.ll"),
      "-S",
      "-xc++",
      "-emit-llvm",
      "-c",
      "-O0",
    ]
  )
  assert not p.stderr
  assert not p.stdout
  assert not p.returncode
  assert (tempdir / "foo.ll").is_file()

  # Run an optimization pass.
  p = opt.Exec(
    [str(tempdir / "foo.ll"), "-o", str(tempdir / "foo2.ll"), "-S", "-dce"]
  )
  assert not p.stderr
  assert not p.stdout
  assert not p.returncode
  assert (tempdir / "foo2.ll").is_file()

  # Compile bytecode to LLVM IR.
  p = clang.Exec([str(tempdir / "foo2.ll"), "-o", str(tempdir / "foo")])
  assert not p.stderr
  assert not p.stdout
  assert not p.returncode
  assert (tempdir / "foo").is_file()

  subprocess.check_call([str(tempdir / "foo")])
Exemple #3
0
def BytecodeToPollyCanonicalized(source: str) -> str:
  process = opt.Exec(
    ["-polly-canonicalize", "-S", "-", "-o", "-"], stdin=source
  )
  if process.returncode: