30 Commits

Author SHA1 Message Date
Fangrui Song
d054c7ee2e Add test utility 'extract'
See https://lists.llvm.org/pipermail/llvm-dev/2020-July/143373.html
"[llvm-dev] Multiple documents in one test file" for some discussions.

`extract part filename` splits the input file into multiple parts separated by
regex `^(.|//)--- ` and extract the specified part to stdout or the
output file (if specified).

Use case A (organizing input of different formats (e.g. linker
script+assembly) in one file).

```
// RUN: extract lds %s -o %t.lds
// RUN: extract asm %s -o %t.s
// RUN: llvm-mc %t.s -o %t.o
// RUN: ld.lld -T %t.lds %t.o -o %t
This is sometimes better than the %S/Inputs/ approach because the user
can see the auxiliary files immediately and don't have to open another file.
```

Use case B (for utilities which don't have built-in input splitting
feature):

```
// RUN: extract case1 %s | llc | FileCheck %s --check-prefix=CASE1
// RUN: extract case2 %s | llc | FileCheck %s --check-prefix=CASE2
Combing tests prudently can improve readability.
This is sometimes better than having multiple test files.
```

Since this is a new utility, there is no git history concerns for
UpperCase variable names. I use lowerCase variable names like mlir/lld.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D83834
2020-07-23 19:15:35 -07:00
Misha Brukman
e22594f3d7 extract has been renamed to llvm-extract to avoid conflicting with another tool
llvm-svn: 21498
2005-04-24 17:36:05 +00:00
Misha Brukman
650ba8eb56 Remove trailing whitespace
llvm-svn: 21428
2005-04-22 00:00:37 +00:00
Jeff Cohen
c8f1f4bc8e Use binary mode for reading/writing bytecode files
llvm-svn: 19751
2005-01-22 17:36:17 +00:00
Reid Spencer
996ec72d48 For PR351:
* Place a try/catch block around the entire tool to Make sure std::string
  exceptions are caught and printed before exiting the tool.
* Make sure we catch unhandled exceptions at the top level so that we don't
  abort with a useless message but indicate than an unhandled exception was
  generated.

llvm-svn: 19192
2004-12-30 05:36:08 +00:00
Reid Spencer
7c16caa336 Changes For Bug 352
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.

llvm-svn: 16137
2004-09-01 22:55:40 +00:00
Reid Spencer
e3263ecaf0 The functions in Signal.h are now in the llvm::sys namespace - adjust
llvm-svn: 16091
2004-08-29 19:28:55 +00:00
Chris Lattner
278f5152d3 Header file moved
llvm-svn: 13813
2004-05-27 05:41:36 +00:00
Misha Brukman
2ccac826e4 Add command-line option to select whether to isolate or delete function from
module. Default is `isolate' as before.

llvm-svn: 13113
2004-04-22 23:07:39 +00:00
Chris Lattner
69e896bdcf Make sure to print a stack trace whenever an error signal is delivered to
the tool.

llvm-svn: 11633
2004-02-19 20:32:39 +00:00
Chris Lattner
3b203f56bc Give extract -o and -f options, just like every other tool!
llvm-svn: 11580
2004-02-18 16:53:59 +00:00
Brian Gaeke
960707c335 Put all LLVM code into the llvm namespace, as per bug 109.
llvm-svn: 9903
2003-11-11 22:41:34 +00:00
Brian Gaeke
8fb7af1ee7 Fix extract to use the right TargetData, like Bugpoint does.
llvm-svn: 9561
2003-10-28 22:22:16 +00:00
Chris Lattner
8f71f04961 fix file header
llvm-svn: 9294
2003-10-20 17:58:43 +00:00
John Criswell
09344dcf97 Added copyright header to all C++ source files.
llvm-svn: 9291
2003-10-20 17:47:21 +00:00
Chris Lattner
6d2eab62b7 Clean up header, remove extra #include
llvm-svn: 8451
2003-09-10 19:42:51 +00:00
Brian Gaeke
ff713ae819 Make createVerifierPass return a FunctionPass *.
llvm-svn: 8449
2003-09-10 19:37:04 +00:00
Chris Lattner
58f9002b4a Move the function extractor pass from tools/extract into lib/Xform/IPO
llvm-svn: 4759
2002-11-19 18:42:59 +00:00
Chris Lattner
66507d887a * Fix extract to work with constant pointer refs correctly
* Extract makes all global vars external, so they don't have initializers

llvm-svn: 4121
2002-10-12 20:50:16 +00:00
Chris Lattner
8e2c197c17 Avoid making external global variables internal
llvm-svn: 4059
2002-10-07 18:33:53 +00:00
Chris Lattner
ae4cf5237a - The extract tool now is sure to extract the function implementation for
the specified name instead of extracting the prototype if both exist.

llvm-svn: 4045
2002-10-06 21:30:04 +00:00
Chris Lattner
da4c6cc151 Print the tool name when an error comes from so that I can tell which
tool of a pipeline is having issues.

llvm-svn: 3167
2002-07-30 21:43:22 +00:00
Chris Lattner
386ebdd66a Remove extraneous #includes
llvm-svn: 3162
2002-07-30 19:33:19 +00:00
Chris Lattner
64a6727d02 *** empty log message ***
llvm-svn: 3087
2002-07-25 16:31:09 +00:00
Chris Lattner
b3b021622f *** empty log message ***
llvm-svn: 3044
2002-07-24 17:12:08 +00:00
Chris Lattner
da02d41e41 Minor changes due to code juggled around
llvm-svn: 3039
2002-07-23 22:04:40 +00:00
Chris Lattner
f5cad15a67 *** empty log message ***
llvm-svn: 2985
2002-07-22 02:10:13 +00:00
Chris Lattner
113f4f4609 MEGAPATCH checkin.
For details, See: docs/2002-06-25-MegaPatchInfo.txt

llvm-svn: 2779
2002-06-25 16:13:24 +00:00
Chris Lattner
c17c38f3cc Make sure the extracted function has external linkage, so that it doesn't
get eliminated by globaldce!

llvm-svn: 2736
2002-05-23 18:36:25 +00:00
Chris Lattner
055de1876a Initial checkin of the "extract" utility
llvm-svn: 2716
2002-05-22 20:27:00 +00:00