<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emscripten-fastcomp-clang/lib/CodeGen, branch master</title>
<subtitle>emscripten clang</subtitle>
<id>https://git.amat.us/emscripten-fastcomp-clang/atom/lib/CodeGen?h=master</id>
<link rel='self' href='https://git.amat.us/emscripten-fastcomp-clang/atom/lib/CodeGen?h=master'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/'/>
<updated>2014-04-25T23:00:38Z</updated>
<entry>
<title>Don't align member functions.</title>
<updated>2014-04-25T23:00:38Z</updated>
<author>
<name>Dan Gohman</name>
<email>sunfish@mozilla.com</email>
</author>
<published>2014-04-25T23:00:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=364355da26053c321180fa31ecd731d36c4cffae'/>
<id>urn:sha1:364355da26053c321180fa31ecd731d36c4cffae</id>
<content type='text'>
Emscripten uses the ARM ABI for pointers to member functions and doesn't
require that member functions are aligned.
</content>
</entry>
<entry>
<title>Introduce an Emscripten C++ ABI.</title>
<updated>2014-04-25T22:51:06Z</updated>
<author>
<name>Dan Gohman</name>
<email>sunfish@mozilla.com</email>
</author>
<published>2014-04-25T22:51:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=ad32fdb927a37dba26cb8b56f3a6b11667fe6584'/>
<id>urn:sha1:ad32fdb927a37dba26cb8b56f3a6b11667fe6584</id>
<content type='text'>
Emscripten uses the Itanium C++ ABI for most things, except that it uses
ARM C++ ABI pointers to member functions, to avoid the overhead of aligning
functions.
</content>
</entry>
<entry>
<title>Fix handling of byval arguments to set the alignment properly.</title>
<updated>2014-03-03T23:00:22Z</updated>
<author>
<name>Dan Gohman</name>
<email>sunfish@mozilla.com</email>
</author>
<published>2014-03-03T22:08:08Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=f92a8f0ef8f7b349d653e97a8fb154719ef6117f'/>
<id>urn:sha1:f92a8f0ef8f7b349d653e97a8fb154719ef6117f</id>
<content type='text'>
Also, fix the way we override DefaultABIInfo methods, since
classifyArgumentType and classifyReturnType are not actually virtual.

Also, DefaultABIInfo does the right thing for floating-point types,
so we don't need to special-case them.
</content>
</entry>
<entry>
<title>Drop addAsmMemoryAroundSyncSynchronize() and asmMemoryIsFence().</title>
<updated>2014-02-28T21:30:42Z</updated>
<author>
<name>Dan Gohman</name>
<email>sunfish@mozilla.com</email>
</author>
<published>2014-02-28T21:07:59Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=f59469c5a434866f9a69439555a3684faa16e7fc'/>
<id>urn:sha1:f59469c5a434866f9a69439555a3684faa16e7fc</id>
<content type='text'>
For us, staying in sync with upstream on issues related to the memory model
is more important. None of clang, gcc, nor icc appear to offer these features.

If such features are desirable, they should ideally be implemented in upstream
clang, in a target-independent way, since this issue would affect users of all
platforms which support threads, not just PNaCl or Emscripten.
</content>
</entry>
<entry>
<title>Introduce the asmjs-unknown-emscripten target triple.</title>
<updated>2014-02-25T01:32:54Z</updated>
<author>
<name>Dan Gohman</name>
<email>sunfish@google.com</email>
</author>
<published>2014-02-22T00:09:43Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=f6e2fddff6294c1c2ec2f9602c30ff680359ed19'/>
<id>urn:sha1:f6e2fddff6294c1c2ec2f9602c30ff680359ed19</id>
<content type='text'>
Notable changes from le32-unknown-nacl so far include:
 - Set i32 as the legal integer set, to help the optimizer avoid creating
   needlessly inefficient code for asm.js.
 - We can use llvm.pow.
 - Don't predefine __ELF__ or __pnacl__ so that we don't need to undefine
   them later.
 - Do predefine asm.js and Emscripten macros, so that we don't need to
   define them later.
 - Don't provide __has_feature(pnacl).
</content>
</entry>
<entry>
<title>Cherrypick upstream r183033: Add support for optimized (non-generic) atomic libcalls.</title>
<updated>2013-11-08T23:52:28Z</updated>
<author>
<name>JF Bastien</name>
<email>jfb@chromium.org</email>
</author>
<published>2013-11-08T23:52:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=a963b803407c9d1cac644cc425004e0ccd28fa45'/>
<id>urn:sha1:a963b803407c9d1cac644cc425004e0ccd28fa45</id>
<content type='text'>
    For integer types of sizes 1, 2, 4 and 8, libcompiler-rt (and libgcc)
    provide atomic functions that pass parameters by value and return
    results directly.

    libgcc and libcompiler-rt only provide optimized libcalls for
    __atomic_fetch_*, as generic libcalls on non-integer types would make
    little sense. This means that we can finally make __atomic_fetch_* work
    on architectures for which we don't provide these operations as builtins
    (e.g. ARM).

    This should fix the dreaded "cannot compile this atomic library call
    yet" error that would pop up once every while.

These code generation issues are encountered because PNaCl doesn't
inline some of the atomic instructions, whereas other targets do. This
patch is just after the 3.3 branch and applies cleanly, but it doesn't
fix all issues: there is still at least one with atomic operations on
pointers which isn't as clean to fix as applying one patch, so I'll
leave that one as-is for now.

R=dschuff@chromium.org
BUG= https://code.google.com/p/nativeclient/issues/detail?id=3623
TEST= ./pnacl/scripts/llvm-test.py --libcxx-tests

Review URL: https://codereview.chromium.org/59793007
</content>
</entry>
<entry>
<title>Treat __sync_synchronize and asm("":::"memory") as stronger fences.</title>
<updated>2013-08-07T22:50:44Z</updated>
<author>
<name>JF Bastien</name>
<email>jfb@chromium.org</email>
</author>
<published>2013-08-07T22:50:44Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=3b1ef29c338890ce55a1990389d8e63f6be7da2c'/>
<id>urn:sha1:3b1ef29c338890ce55a1990389d8e63f6be7da2c</id>
<content type='text'>
This is a companion patch to:
  https://codereview.chromium.org/22240002/
  https://codereview.chromium.org/22474008/
and deals with the Clang-side of things.

The above patch will handle the fallouts of this Clang patch, including
some changes to un-duplicate work that RewriteAsmDirectives.cpp
does. The goal of this patch is to force some extra ordering on
non-atomics for le32 which LLVM doesn't necessarily provide.

R=eliben@chromium.org
TEST= ninja check-all
BUG= https://code.google.com/p/nativeclient/issues/detail?id=3475
BUG= https://code.google.com/p/nativeclient/issues/detail?id=3611

Review URL: https://codereview.chromium.org/22294002
</content>
</entry>
<entry>
<title>Change __cyg_profile_func_enter/exit to __pnacl_profile... and change the signature.</title>
<updated>2013-07-25T22:05:16Z</updated>
<author>
<name>Robert Grosse</name>
<email>grosse@chromium.org</email>
</author>
<published>2013-07-25T22:05:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=548960c21c590dcd4919a1bba000e989c140c8ef'/>
<id>urn:sha1:548960c21c590dcd4919a1bba000e989c140c8ef</id>
<content type='text'>
__pnacl_profile_function_x takes a single argument - the name of the current function as a constant string, rather than a pair of function addresses like __cyg takes. This makes it work even in PNaCl and removes the need to track symbol information separately.

BUG=none
R=dschuff@chromium.org

Review URL: https://codereview.chromium.org/20000003
</content>
</entry>
<entry>
<title>Add a -finstrument-functions-size=n option to control basic block</title>
<updated>2013-07-25T21:34:41Z</updated>
<author>
<name>Robert Grosse</name>
<email>grosse@chromium.org</email>
</author>
<published>2013-07-25T21:34:41Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=7b390888fd9f3886d966ab072c328f4fbd9c64b4'/>
<id>urn:sha1:7b390888fd9f3886d966ab072c328f4fbd9c64b4</id>
<content type='text'>
filtering. If omitted entirely, the original behavior is restored.
This also undos the string and __pnacl_profile stuff from the previous
CL. Finally, it fixes and updates the -finstrument-function tests.

BUG=none
R=bradnelson@google.com, dschuff@chromium.org

Review URL: https://codereview.chromium.org/19793007
</content>
</entry>
<entry>
<title>Cherrypick upstream volatile _Complex alignment patches</title>
<updated>2013-07-22T21:02:59Z</updated>
<author>
<name>JF Bastien</name>
<email>jfb@chromium.org</email>
</author>
<published>2013-07-22T21:02:59Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/emscripten-fastcomp-clang/commit/?id=ccad851d1493d84019f3372c0033908cdd516f58'/>
<id>urn:sha1:ccad851d1493d84019f3372c0033908cdd516f58</id>
<content type='text'>
Specifically:
  r186564 - Fix volatile _Complex alignment test on platforms where 64-bit floating point isn't 64-bit aligned
  r186490 - Propagate alignment for _Complex

These should fix GCC torture test failures, as well as the all-important uses of volatile _Complex numbers in C, and their alignment being incorrect.

BUG= PNaCl FYI bots red on torture tests
TEST= ./tools/toolchain_tester/torture_test.py pnacl x86-64 --concurrency=32 &gt;&amp; torture-x86-64.log ; ./tools/toolchain_tester/torture_test.py pnacl x86-32 --concurrency=32 &gt;&amp; torture-x86-32.log ; ./tools/toolchain_tester/torture_test.py pnacl arm --concurrency=32 &gt;&amp; torture-arm.log
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/19915003
</content>
</entry>
</feed>
