History log of /frameworks/compile/slang/slang_rs.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
5984fc03b6189f19f3721423b92469e4908a49ef 10-Sep-2014 Stephen Hines <srhines@google.com> Emit 32/64-bit bitcode appropriately for C++ reflection.

Bug: 17417839

This change adds proper handling of C++ reflection for the -m32/-m64
command line arguments. Only one type of bitcode will be emitted.

Change-Id: Ic52812b0fc7836eefbe8b6837272124d69b50182
2d504fd03c66be56ac3b4bb62c78cc72c75dd8b6 15-Aug-2014 Stephen Hines <srhines@google.com> Suppress warnings on our second compilation (for 64-bit).

Bug: 16031597
Bug: 17052573

Without this patch the 64-bit compilation path will print duplicate warning
diagnostics, since we call the frontend twice (for 32-bit, and then 64-bit).
The simplest fix is to not print warnings for the second compilation. A bug
(17052573) has been filed to track fixing this a better way (actually printing
out all warning diagnostics, but removing duplicates explicitly).

Change-Id: I78ac0ebd2b132713ec0c86c2cf234da2b620eecf
7ac9d0de26d325071ad3f26f8d34514efca2d3d6 16-Jul-2014 Stephen Hines <srhines@google.com> Update slang for LLVM rebase to r212749.

Change-Id: I5819f9df3212ffcfa8f34c11d3cea29f1fd04878
9ae18b2bbee0b08afd400542e863dd665ff76059 11-Jun-2014 Stephen Hines <srhines@google.com> Add an option to emit 32-bit and 64-bit bitcode.

Bug: 16031597

Change-Id: Ifb3c4eca5e7ae16106260c2b5f5da6854c021a3a
9e3aa07a4456aad52920e0a7464954fe67cdbe01 17-Jun-2014 Chris Wailes <chriswailes@google.com> Added a new development target api.

Change-Id: I71a16597f2605b9323424f8d493f103519d10178
fc4f78b9c7941132fb048a83f0e4ba528c3b4fd0 11-Jun-2014 Stephen Hines <srhines@google.com> Add -v (-verbose/--verbose) option to llvm-rs-cc.

This change also suppresses the display of "Generating Script*." output by

Change-Id: I034a3ba20acf64e1eb9ecc02133edb03b643d559
7f5704efe0c59d5599f1ac7056976225dbfab946 11-Jun-2014 Stephen Hines <srhines@google.com> Clean up more of the RSCCOptions class.

Pass a bunch of arguments using the class directly. Move the documentation
next to the actual option declarations, rather than as part of a huge call
to "compile()". Convert from bitfields to bool.

Change-Id: I666dea469717f1f0ae59e0220a6146c96fc0fb7c
0e4ee65a2ba6b32fcd16c5d4a57fc7542d4032b4 10-Jun-2014 Stephen Hines <srhines@google.com> Run InitializePreprocessor() to ensure that all macros are set up properly.

Without this, we don't end up defining things like __LP64__ for 64-bit
compilation targets.

Change-Id: I11e11bde3498089056e7a70903c8d47d1030e01a
59f22c376b2c1cd109735280689224fadfe40b42 04-Jun-2014 Jean-Luc Brouillet <jeanluc@google.com> Set the reflection parameters in the constructors.

Change-Id: I3c74ab5a10d7aa3adaf460c56d2ab295a766fcfb
12fc283f4108fd6f7f0164c121ff2f6fb5044225 04-Jun-2014 Jean-Luc Brouillet <jeanluc@google.com> Don't go through RSContext for the Java reflection (take 2)

Change-Id: I08e5be9c4e39501238a9f9c382f0c66b2caf5a8d
7fda9848f91fc5cca55f63423b35672128b6daab 04-Jun-2014 Jean-Luc Brouillet <jeanluc@google.com> Revert "Don't go through RSContext for the Java reflection."

This reverts commit cc1b9699446aea20773e4c3c6ff5759fedd8ab51.

Change-Id: I330f8beb02ba4868ce115848543c506d5dea46bf
cc1b9699446aea20773e4c3c6ff5759fedd8ab51 04-Jun-2014 Jean-Luc Brouillet <jeanluc@google.com> Don't go through RSContext for the Java reflection.

The C++ code does not do that. RSContext should just contain the

Change-Id: Idd9d4c00bdd27b51ba7fc0aee8c5e7cfdab6d0a0
129fd8228cd04592a20c3d5009805a23585f2479 29-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Add a GeneratedFile class for Java and C++ file generation.

This CL changes the generation of the BitCode file. Next CLs will change the generation of the Java and C++ files.

Change-Id: I59f9f4f46ecd35022ecf3293c1ad76a02e8db574
2968921e1cedf85360964c5a39e1ce36c66ecd09 27-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Replace std::endl by \n.

\n is more readable AND endl causes a buffer flush.

Change-Id: I3f7472a16e3bebc06476d8e37129e4088546b4aa
796e7b1400d3f3f7c07496d88bb48129ea925bb9 27-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Remove useless "return;" statements.

More cleanups to follow...

Change-Id: Ib8348255273771c1e9ff07e79bd7fbc8f2795a5b
44d495d2ad8c350a8f586502c9ee8e97a513646a 23-May-2014 Stephen Hines <srhines@google.com> Clean up embedded bitcode path for Java.

Change-Id: I79cc65778173c7eeab028dedfc4adcb59bef44c2
ee4016d1247d3fbe50822de279d3da273d8aef4c 11-Apr-2014 Tim Murray <timmurray@google.com> Update Slang for Clang/LLVM 3.5a.

Change-Id: Icd59efa1197098076555c505c31939866e504a83
a7ab54d590b5a959354a654cccacf4337e7fd5b0 08-Jan-2014 Stephen Hines <srhines@google.com> Add rs_core_math.rsh to the list of allowed RS headers.

BUG: 5653293

Change-Id: I79935782da3436b0d794fea6a06c36aa85004756
925879fa622dda293806ed25b1ee63d2f4a8d65a 20-Jul-2013 Stephen Hines <srhines@google.com> Clean up handling of Java package name for llvm-rs-cc.

Adds support for C++ code generator to use this package name as well.

This change also resolves a small issue with an uninitialized mVerbose flag.

Change-Id: Ia3037a3f4dbe172ddc51af3064ac1708526a6df6
11274a7324b478ec13e1d10a1b81350b34a65ab1 27-Sep-2012 Stephen Hines <srhines@google.com> Validate FS (and RS) ASTs.

This change adds a new RSCheckAST class that is used to handle validation
of the final AST. The checks include existing RS checks (for accepted types)
and new checks for Filterscript (like disallowing pointers, unions and
> 32 bit types completely). The refactoring also fixes a subtle union bug
that existed in prior versions of llvm-rs-cc. We also add an implicit
pragma for "rs_fp_relaxed" by default on Filterscript.

Bug: 7166741

Change-Id: Ia077783b4caba0bbd89df2ab3827e9f4d1009eea
cf9a73a4140402c0e9e4fbab27477f22cc7d8e3c 20-Sep-2012 Stephen Hines <srhines@google.com> Fix teardown bug for multiple files without pragma.

This previously caused a segmentation fault in llvm-rs-cc. We were
improperly using the DiagnosticsEngine after we had reset() everything.

Bug: 7202787

Change-Id: Ic8522566ef257e70f16caf34b89f6a8e012908c5
0a813a3ef2a82f19d7eab9e23ae8493197143803 04-Aug-2012 Stephen Hines <srhines@google.com> Add RS package name option + support.

llvm-rs-cc -rs-package-name=android.renderscript ...
llvm-rs-cc -rs-package-name android.renderscript ...

This allows us to reflect a different import path for our base RS classes.
The default value is "android.renderscript", resulting in a reflection that
produces "import android.renderscript.*;".

Change-Id: Icf7e83b963ba70c803899697f49b41fdfb9586e7
4eb4b38b35855436543d229bc3c83b60d47dbbce 21-Mar-2012 Alex Sakhartchouk <alexst@google.com> Organizing rs headers by their logical components.

Change-Id: I092ca29892da5a9271429cf3518b99254d39ab9d
1b6a0883cd6984e11e59b0c847fb334df1f41afc 12-Mar-2012 Jason Sams <jsams@google.com> start cpp reflection


Change-Id: Iede58fde457d16293345e741f80109f89e653ad5
3c9c8645f52ea95e94f88715f9594750567a4e33 02-Mar-2012 Stephen Hines <srhines@google.com> Merge "Add option to generate reflected C++ code."
5c25c5159c0a5be9af992679067790716626da7b 27-Feb-2012 Stephen Hines <srhines@google.com> Add option to generate reflected C++ code.


Change-Id: Ib31ca4bd48a0aa15ebb27092a1ba502e7520d0cf
c460b37ffb50819a32c2a8967754b6f784b28263 09-Jan-2012 mkopec1 <mkopec1@intel.com> Enable emission of debugger-friendly bitcode

- Add "-g" flag to llvm-rs-cc in order to emit debug metadata
- Add optimization level parameter -O and tests
- Add lit based tests (use llvm-lit from libbcc/tests/debuginfo)
-- Add README file for lit-tests directory

Change-Id: I5e2f6f9b6f536fa7a10de008b54ac0878cf352a9
9207a2e495c8363606861e4f034504ec5c153dab 21-Oct-2011 Logan Chien <loganchien@google.com> Apply changes to migrate to LLVM upstream Oct 20th 2011.

- StructType::isAnonymous is renamed to StructType::isLiteral.

- PassManagerBuilder has been moved from
llvm/Support/PassManagerBuilder.h to

- Include llvm/Transforms/IPO.h for llvm::createInternalizePass.

- clang::DiagClient has be renamed to clang::DiagnosticConsumer.
Besides, we have to implement one additional pure virtual method
'clone' for create a clone of slang::DiagnosticBuffer.

- llvm::Linker::LinkModules comes with one additional parameter.
Passing llvm::Linker::DestroySource should be equivalent to
the old code we were using.

- slang::Slang is now derived from clang::ModuleLoader and implemented
loadModule pure virtual method (though we will always return NULL.)

- clang::Preprocessor is taking one additional parameter for

- clang::Diagnostic has been changed. A lot of the method has been
moved to clang::DiagnosticsEngine, and we can no longer 'Report' a
diagnostic from clang::Diagnostic. We have to use
clang::DiagnosticEngine instead.

- llvm::setCodeModel has been removed.

Change-Id: I1f2a4cbeaf61a8ed1d0d635a5a0e1baa90d99d07
c632be206ac4fe49a5db05cfa54942d774329dbe 24-Sep-2011 Stephen Hines <srhines@google.com> Generate warnings properly for multi-file compiles.


Slang (llvm-rs-cc) was clobbering warnings during multi-file compilation
because they are not part of the error count. When the diagnostics get reset,
we should be dumping whichever non-error (i.e. warning) diagnostics we have
accumulated. During investigation, I also found then that our dependency
generation path can cause duplicate warnings to be added to the diagnostic
client. Thus, to fix this bug, the change need dumps relevant diagnostics, but
then suppresses warnings if we are compiling the same file multiple times
(once for code generation and once for dependencies).

Change-Id: I4b94e962f93b96f31ff7e7d6cce45418fe39e1d1
688e64b2d56e4218c680b9d6523c5de672f55757 24-Aug-2011 Stephen Hines <srhines@google.com> Generate .rs.dtor() to clean up globals.


Change-Id: I9d1996153fe774a5ce95646a8a2e07aa6e7fa85f
4cc499d6e5ec602309501873449c938af61170b2 25-Aug-2011 Stephen Hines <srhines@google.com> Start basic support for LLVM 2.9 bitcode writer.

Change-Id: I6a54158a32e485f506f0b991f89125b8a0e60267
4a4bf92a8add68629a7e6e59ef81c3c3fe603a75 19-Aug-2011 Stephen Hines <srhines@google.com> Don't generate forEach() on pre-ICS target SDK.

Change-Id: I794587d1f79a08aca8cc4f7f20f4012050ab0501
2d35eddd17eaa8bf5a0202dc60ead14dd16eb2d6 09-Aug-2011 Stephen Hines <srhines@google.com> Update header file includes for llvm-rs-cc.

Change-Id: I69e58c59b0b03371d72c0d8974f1ed371d0b33dd
2e35b136cc2434080fcd682d2f95e53a87675dd4 22-Jul-2011 Stephen Hines <srhines@google.com> Add support for -target-api <n> to llvm-rs-cc.

Change-Id: Ieaef83fae55f84e87a9301b377633ac658a724b6
6b201eb3306b9609a991728a52ce948974bd4aed 21-Jul-2011 Stephen Hines <srhines@google.com> Define RS_VERSION as the SDK version.

Change-Id: Iaee48b397923e7f6af33b6dfd4a03f52bdd34f93
6f4e0a9955a53a6f715af7e674e68ed15270a47c 09-Mar-2011 Logan Chien <tzuhsiang.chien@gmail.com> Migrate to newer API.

Following function (left) is deprecated, use the right version

llvm::sys::Path::getLast -> llvm::sys::path::filename
llvm::sys::Path::getBasename -> llvm::sys::path::stem
llvm::sys::Path::getDirname -> llvm::sys::path::parent_path
be27482cdeaf08576bc39b72a15d35d13014a636 16-Feb-2011 Logan <tzuhsiang.chien@gmail.com> Apply changes to migrate to LLVM Mar 6th 2011.

- API for name mangling. (Changing from non-public APIs to the
public one)

- API changes for clang::Diagnostic::getNumErrors ->

- API changes for clang::CharUnits and Quantity type.

- API changes libLLVMSystem -> libLLVMSupport.

- Change clang::Token::eom -> clang::Token::eod.

- Remove SourceRange parameter for DeclRefExpr::Create and

- Add const qualifier for several unsafe type cast.
8d5a2f6ab321615bfb3a46f68aff0b643a71caa0 08-Feb-2011 Raphael <raphael@google.com> Support Windows paths in slang.

Change-Id: I5240164d1d83f7816973a0e6ee9c26e337e605b1
4cc67fce91f43215d61b2695746eab102a3db516 01-Feb-2011 Stephen Hines <srhines@google.com> Support for generating .java dependencies for RS.

This updates the -MD option to also emit .java targets to the dependency
information placed in our foo.d file.

Change-Id: I189cf6302bc1cbd6201487743a37dced87b5c5eb
3fd0a94a5cf1656569b1aea07043cc63939dcb46 18-Jan-2011 Stephen Hines <srhines@google.com> Refactor pragma handling (pass everything to LLVM)

Change-Id: Id09d4934af06f0880cd867456218602ce9a9e2de
a858cb6f3d9223d65bf73e1230c6324ded4095f6 17-Jan-2011 Stephen Hines <srhines@google.com> Fix variable names for Clang-based compilation.

Change-Id: I69b28110e9fda63abb3770da7a1127af4e1f2963
125052390460773d0a4531d5bd26cdb704d08c93 07-Jan-2011 Stephen Hines <srhines@google.com> Add rs_time.h as a valid default RS header.

Change-Id: I85d4415b7d76db1cd4114a1078892c1016936e67
e639eb5caa2c386b4a60659a4929e8a6141a2cbe 09-Nov-2010 Stephen Hines <srhines@google.com> Improve code style.

Change-Id: I26e043849bce2a4b41ae132fbe0c882f4a6f112f
9e5b503349719144f63ccb7c62ee9c291a7d83b8 03-Nov-2010 Stephen Hines <srhines@google.com> Use Clang object references instead of pointers.

Change-Id: Ief0e78859572761d880eaad9ae854f14e65da2c4
fcda2352b9e140529f8f3c89f05b10a70c0048b2 20-Oct-2010 Stephen Hines <srhines@google.com> Support for local RS zero initialization.

Change-Id: I785cfc6ee53abb6c88ab5bdba5e7c8c16b8409de
3ab021f5913736512343730d91e771037954061b 18-Oct-2010 Zonr Chang <zonr@google.com> Again, don't include rs_graphics.rsh by default.
8785d056b8912325b7e2c9c6c7adbd13b90964c4 13-Oct-2010 Zonr Chang <zonr@google.com> Revert "embed .rsh in llvm-rs-cc".
41ebf534161bb67f6207a070c1f6a895dc853408 13-Oct-2010 Zonr Chang <zonr@google.com> Remove Slang::TargetDescription.

Clang and LLVM never read outside target description to configure the
target-dependent information needed during compilation and codegen. They
always use their own data layout string for specific, known target.
e86245a09bb8b9e72f5dc68083444ec938865798 12-Oct-2010 Zonr Chang <zonr@google.com> Fix potential memory corruption in checkODR().
641558f02fe6ce0ee3ae5076eb366c25e2ad5903 12-Oct-2010 Zonr Chang <zonr@google.com> Implement one-definition-rule (ODR) feature.

When compiling multiple RS files, we say two RS files A and B break ODR

1. They have at least one common struct named [S] and [S] will be reflected
to ScriptField_[S].java, and
2. [S] defined in A is not *exactly the same* (number of fields, field
type and field name) as the one defined in B.

This CL detects such error.
cf6af6abc1de499920571308b14a27e19cf57097 11-Oct-2010 Zonr Chang <zonr@google.com> Refine the SlangRS::compile() API.

This makes compile() methods in SlangRS more reasonable. And this is
part of commits for ODR. The SlangRS::compile() now compiles "a group of
RS files" instead of one by one individually.
c383a500aa59423264811be3874461bf8adbfea0 11-Oct-2010 Zonr Chang <zonr@google.com> Prepend legal announcement in all files.

Release libslang/llvm-rs-cc/llvm-rs-link under Apache 2.0 license.
b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ec 10-Oct-2010 Shih-wei Liao <sliao@google.com> Revert "Revert "New implementation of llvm-rs-cc (replacement of slang_driver).""

This reverts commit a6d60672695f1438a63acdbf85eae7f97ce2b50d.
a6d60672695f1438a63acdbf85eae7f97ce2b50d 10-Oct-2010 Shih-wei Liao <sliao@google.com> Revert "New implementation of llvm-rs-cc (replacement of slang_driver)."

This reverts commit 6791df284557f4173a9715b3634f4f4901a6bb8a.
6791df284557f4173a9715b3634f4f4901a6bb8a 09-Oct-2010 Shih-wei Liao <sliao@google.com> New implementation of llvm-rs-cc (replacement of slang_driver).

Change-Id: I1b8b6cf3dad8ef8fe2f4d24d4df604099f45ff37
592a954aae4cb946970b557e94afd5ee453fd57e 07-Oct-2010 Zonr Chang <zonr@google.com> Make --allow-rs-prefix more reasonable.

Now slang only alarms when a function prefixed with 'rs' and was not declared
in one of the RS default headers (including rs_graphics.rsh). Therefore, you
don't need to (and shouldn't) pass this option to slang in general.
b257301a1c711ba81458a4f8bf3c99c91c91a047 07-Oct-2010 Zonr Chang <zonr@google.com> Don't include rs_graphics.rsh by default.
Fix the Externalize in slang_driver.cpp.

Change-Id: Idce037b0150af3ea9968e39b7bce63a0e1b6d9a5
3c250c5d6cbf4123e959a3466990fda9fa50987a 06-Oct-2010 Zonr Chang <zonr@google.com> Better way to include default RS headers (*.rsh).

Change-Id: If1435ff983fc4f9b36dc4c3d70348e033957db49
3a9ca1f0d6bd8f12c2bb2adea51f95c255996180 06-Oct-2010 Zonr Chang <zonr@google.com> Provide better abstraction of class Slang.

1. Remove the Slang C APIs support (not used by any other programs.)
2. All RS relatives are now in slang_rs_*.cpp.