echristo (Eric Christopher)
User

Projects

User does not belong to any projects.
User Since
Oct 15 2012, 2:12 PM (232 w, 1 d)

Recent Activity

Yesterday

echristo committed rL298956: Default enable the rtm feature only on skylake and later for now because Intel….
Default enable the rtm feature only on skylake and later for now because Intel…
Tue, Mar 28, 4:15 PM
echristo committed rL298952: Add a similar test for tailcall optimization as in r270287 for aarch64..
Add a similar test for tailcall optimization as in r270287 for aarch64.
Tue, Mar 28, 3:50 PM
echristo added a comment to D31407: [PPC] In PPCBoolRetToInt change the bool value to i64 if the target is ppc64.

LGTM.

Tue, Mar 28, 3:21 PM
echristo added inline comments to D31407: [PPC] In PPCBoolRetToInt change the bool value to i64 if the target is ppc64.
Tue, Mar 28, 3:12 PM
echristo added inline comments to D31407: [PPC] In PPCBoolRetToInt change the bool value to i64 if the target is ppc64.
Tue, Mar 28, 2:32 PM
echristo added inline comments to D31407: [PPC] In PPCBoolRetToInt change the bool value to i64 if the target is ppc64.
Tue, Mar 28, 1:39 PM

Mon, Mar 27

echristo accepted D31407: [PPC] In PPCBoolRetToInt change the bool value to i64 if the target is ppc64.

Couple of small nits, otherwise LGTM.

Mon, Mar 27, 4:06 PM
echristo added a comment to D30431: [PowerPC] MachineSSA pass to reduce the number of CR-logical operations.

How does this work on the testcases that hfinkel added in PR32320?

Mon, Mar 27, 3:56 PM
echristo committed rL298888: Remove an oddly unnecessary temporary..
Remove an oddly unnecessary temporary.
Mon, Mar 27, 3:53 PM

Sat, Mar 25

echristo closed D31317: Change the default attributes for llvm.prefetch to enable optimization..

Given that this is the suggested direction from Hal originally I'm going to take Danny's LGTM as an OK.

Sat, Mar 25, 1:32 PM
echristo committed rL298781: Change the default attributes for llvm.prefetch to inaccessiblemem_or_argmemonly.
Change the default attributes for llvm.prefetch to inaccessiblemem_or_argmemonly
Sat, Mar 25, 1:32 PM
echristo committed rL298778: _CALL_LINUX is only defined on 64-bit ppc linux platforms, not 32-bit..
_CALL_LINUX is only defined on 64-bit ppc linux platforms, not 32-bit.
Sat, Mar 25, 12:38 PM

Fri, Mar 24

echristo committed rL298771: Update the comment on not yet generated preprocessor defines to remove….
Update the comment on not yet generated preprocessor defines to remove…
Fri, Mar 24, 11:51 PM
echristo committed rL298770: Add the __LONGDOUBLE128 define for ppc targets that have 128 bit long doubles..
Add the __LONGDOUBLE128 define for ppc targets that have 128 bit long doubles.
Fri, Mar 24, 11:49 PM
echristo committed rL298769: Define __HAVE_BSWAP__ on ppc to match gcc since we support both builtins as….
Define __HAVE_BSWAP__ on ppc to match gcc since we support both builtins as…
Fri, Mar 24, 10:52 PM
echristo committed rL298765: Add the _CALL_LINUX preprocessor define for ppc linux platforms..
Add the _CALL_LINUX preprocessor define for ppc linux platforms.
Fri, Mar 24, 8:46 PM
echristo committed rL298761: __BIGGEST_ALIGNMENT__ has always been 16 on all power platforms rather.
__BIGGEST_ALIGNMENT__ has always been 16 on all power platforms rather
Fri, Mar 24, 8:07 PM
echristo committed rL298759: Add preprocessor defines for a bare powerpc64le triple/cpu..
Add preprocessor defines for a bare powerpc64le triple/cpu.
Fri, Mar 24, 7:41 PM
echristo added inline comments to D30760: Record command lines in objects built by clang, Clang part.
Fri, Mar 24, 2:54 PM

Thu, Mar 23

echristo accepted D31301: Remove stale and unused (MC)TargetOptions comparators..

Oh, sure. :)

Thu, Mar 23, 10:32 PM
echristo added a reviewer for D31240: [PowerPC] Instruction Selection to eliminate compare instructions : echristo.
Thu, Mar 23, 6:59 PM
echristo added a comment to D31301: Remove stale and unused (MC)TargetOptions comparators..

Should we delete the function so that no one tries to use it?

Thu, Mar 23, 6:50 PM
echristo requested changes to D30760: Record command lines in objects built by clang, Clang part.
Thu, Mar 23, 6:49 PM
echristo added a comment to D30760: Record command lines in objects built by clang, Clang part.

Needs more testing. Might want to make sure that you actually are recording some useful command line options and that you're looking at the cc1 command line.

Thu, Mar 23, 6:49 PM
echristo created D31317: Change the default attributes for llvm.prefetch to enable optimization..
Thu, Mar 23, 6:24 PM
echristo committed rL298637: Kill some trailing whitespace to make some new changes a bit easier..
Kill some trailing whitespace to make some new changes a bit easier.
Thu, Mar 23, 12:53 PM
echristo committed rL298628: Remove the subtarget argument from LowerFP_TO_INT since there's one.
Remove the subtarget argument from LowerFP_TO_INT since there's one
Thu, Mar 23, 10:47 AM
echristo committed rL298627: Remove unused X86Subtarget argument from getOnesVector..
Remove unused X86Subtarget argument from getOnesVector.
Thu, Mar 23, 10:47 AM

Wed, Mar 22

echristo committed rL298555: Clean up some Subtarget uses and casts in the X86 backend, removing unnecessary….
Clean up some Subtarget uses and casts in the X86 backend, removing unnecessary…
Wed, Mar 22, 3:57 PM

Tue, Mar 21

echristo committed rL298487: Move setting of LangOpts based on target flags out of CompilerInstance.
Move setting of LangOpts based on target flags out of CompilerInstance
Tue, Mar 21, 11:48 PM
echristo added a comment to D30415: Fix -mno-altivec cannot overwrite -maltivec option.

I have a patch to do this now. I'll plan on committing it in a bit.

Is there a way to mark the -f form of the option as deprecated? We should warn and suggest users switch to the -maltivec option for a release to give people a chance to update their builds.

Tue, Mar 21, 3:19 PM
echristo committed rL298449: Remove the -faltivec alias option and replace it with -maltivec everywhere..
Remove the -faltivec alias option and replace it with -maltivec everywhere.
Tue, Mar 21, 3:19 PM
echristo accepted D31213: Add support for -fno-auto-profile and -fno-profile-sample-use.

LGTM.

Tue, Mar 21, 2:52 PM
echristo added a comment to D31213: Add support for -fno-auto-profile and -fno-profile-sample-use.

Can you add a test for fno-auto-profile?

Tue, Mar 21, 2:46 PM
echristo requested changes to D30760: Record command lines in objects built by clang, Clang part.

Why aren't we passing the flags down as a string in the IR?

Tue, Mar 21, 2:35 PM

Mon, Mar 20

echristo added a comment to D30415: Fix -mno-altivec cannot overwrite -maltivec option.

I'm a bit confused by this discussion. -faltivec and -maltivec are simply aliases, they do exactly the same thing; the clang-internal variable OPT_faltivec indicates the use of either -faltivec or -maltivec.

They didn't used to, I arranged it so that they did (technically breaking gcc compatibility) a while ago.

Well, mainline GCC doesn't have -faltivec at all and never had, I think this was only an Apple GCC extension ... Not sure what exactly the semantics of that was.

Sure it does and has for years. Check out rs6000/darwin.h :)

FWIW: It turns on maltivec and adds a -include of altivec.h

Or is the suggestion to simply remove the alias -faltivec, and leave -maltivec as-is? I'd be less opposed to this since it probably breaks fewer users ... but I'm still not quite sure what it actually buys us. And in any case the patch currently under discussion here would still be necessary then, to fix -maltivec -mno-altivec ...

No, remove faltivec and move forward with -maltivec/-mno-altivec but you should be able to remove a lot of the special handling at that point.

I'm still confused as to what exactly you're refering to here. As far as I can see, every single thing triggered by -faltivec / -maltivec in the compiler frontend would still be needed exactly the same if we only supported the -maltivec option name. So the only thing we'd save is literally the two lines in include/clang/Driver/Options.td that set up the alias.

Do you have an example of the "special handling" to remove you're thinking of?

Nearly all of the code in lib/Driver/ToolChains/Clang.cpp and lib/Driver/ToolChains/Arch/PPC.cpp that deal with altivec. Simplifying the interface by getting rid of needing to check multiple options.

Mon, Mar 20, 9:58 PM
echristo added a comment to D30415: Fix -mno-altivec cannot overwrite -maltivec option.

I'm a bit confused by this discussion. -faltivec and -maltivec are simply aliases, they do exactly the same thing; the clang-internal variable OPT_faltivec indicates the use of either -faltivec or -maltivec.

They didn't used to, I arranged it so that they did (technically breaking gcc compatibility) a while ago.

Well, mainline GCC doesn't have -faltivec at all and never had, I think this was only an Apple GCC extension ... Not sure what exactly the semantics of that was.

Mon, Mar 20, 5:58 PM
echristo committed rL298318: Fix parsing of htmxlintrin.h in C++ mode.
Fix parsing of htmxlintrin.h in C++ mode
Mon, Mar 20, 3:43 PM
echristo committed rL298307: Turn on HTM on power8 and later (including powerpc64le) since it's.
Turn on HTM on power8 and later (including powerpc64le) since it's
Mon, Mar 20, 2:25 PM
echristo added a comment to D28893: Non-virtual subtarget features functions.

No worries at all. Thanks!

Mon, Mar 20, 9:59 AM

Sat, Mar 18

echristo added a comment to D30415: Fix -mno-altivec cannot overwrite -maltivec option.

Different suggestion:

Remove the faltivec option. Even gcc doesn't support it anymore afaict.

What are you suggesting? Always having the language extensions on? Or explicitly tying the language extensions to the underlying target feature?

I'm a bit confused by this discussion. -faltivec and -maltivec are simply aliases, they do exactly the same thing; the clang-internal variable OPT_faltivec indicates the use of either -faltivec or -maltivec.

Sat, Mar 18, 4:27 PM

Fri, Mar 17

echristo committed rL298153: Updating branches/google/testing to r297704.
Updating branches/google/testing to r297704
Fri, Mar 17, 5:15 PM
echristo committed rL298152: Creating tags/google/testing/2017-03-17 from r297704.
Creating tags/google/testing/2017-03-17 from r297704
Fri, Mar 17, 5:14 PM
echristo committed rL298150: Creating tags/google/testing/2017-03-17 from r297704.
Creating tags/google/testing/2017-03-17 from r297704
Fri, Mar 17, 4:56 PM
echristo committed rL298151: Updating branches/google/testing to r297704.
Updating branches/google/testing to r297704
Fri, Mar 17, 4:47 PM
echristo committed rL298148: Creating tags/google/testing/2017-03-17 from r297704.
Creating tags/google/testing/2017-03-17 from r297704
Fri, Mar 17, 4:43 PM
echristo committed rL298149: Updating branches/google/testing to r297704.
Updating branches/google/testing to r297704
Fri, Mar 17, 4:34 PM
echristo committed rL298147: Updating branches/google/testing to r297704.
Updating branches/google/testing to r297704
Fri, Mar 17, 4:32 PM
echristo committed rL298143: Updating branches/google/testing to r297704.
Updating branches/google/testing to r297704
Fri, Mar 17, 4:31 PM
echristo committed rL298139: Creating tags/google/stable/2017-03-17 from r297704.
Creating tags/google/stable/2017-03-17 from r297704
Fri, Mar 17, 4:31 PM
echristo committed rL298146: Creating tags/google/testing/2017-03-17 from r297704.
Creating tags/google/testing/2017-03-17 from r297704
Fri, Mar 17, 4:30 PM
echristo committed rL298145: Updating branches/google/testing to r297704.
Updating branches/google/testing to r297704
Fri, Mar 17, 4:27 PM
echristo committed rL298144: Creating tags/google/testing/2017-03-17 from r297704.
Creating tags/google/testing/2017-03-17 from r297704
Fri, Mar 17, 4:21 PM
echristo committed rL298142: Creating tags/google/testing/2017-03-17 from r297704.
Creating tags/google/testing/2017-03-17 from r297704
Fri, Mar 17, 4:15 PM
echristo committed rL298141: Cleaning up testing branch.
Cleaning up testing branch
Fri, Mar 17, 3:56 PM
echristo committed rL298129: Creating tags/google/stable/2017-03-17 from r297704.
Creating tags/google/stable/2017-03-17 from r297704
Fri, Mar 17, 3:42 PM
echristo committed rL298130: Updating branches/google/stable to r297704.
Updating branches/google/stable to r297704
Fri, Mar 17, 3:42 PM
echristo committed rL298137: Creating tags/google/stable/2017-03-17 from r297704.
Creating tags/google/stable/2017-03-17 from r297704
Fri, Mar 17, 3:42 PM
echristo committed rL298138: Updating branches/google/stable to r297704.
Updating branches/google/stable to r297704
Fri, Mar 17, 3:41 PM
echristo committed rL298136: Updating branches/google/stable to r297704.
Updating branches/google/stable to r297704
Fri, Mar 17, 3:25 PM
echristo committed rL298135: Creating tags/google/stable/2017-03-17 from r297704.
Creating tags/google/stable/2017-03-17 from r297704
Fri, Mar 17, 3:25 PM
echristo committed rL298128: Cleaning up stable branch.
Cleaning up stable branch
Fri, Mar 17, 3:21 PM
echristo committed rL298134: Updating branches/google/stable to r297704.
Updating branches/google/stable to r297704
Fri, Mar 17, 3:19 PM
echristo committed rL298133: Creating tags/google/stable/2017-03-17 from r297704.
Creating tags/google/stable/2017-03-17 from r297704
Fri, Mar 17, 3:17 PM
echristo committed rL298132: Updating branches/google/stable to r297704.
Updating branches/google/stable to r297704
Fri, Mar 17, 3:15 PM
echristo committed rL298131: Creating tags/google/stable/2017-03-17 from r297704.
Creating tags/google/stable/2017-03-17 from r297704
Fri, Mar 17, 3:11 PM

Thu, Mar 16

echristo committed rL298023: Remove LessPreciseFPMADOption from TargetOptions along with all of the.
Remove LessPreciseFPMADOption from TargetOptions along with all of the
Thu, Mar 16, 5:50 PM
echristo committed rL298022: Remove setting LessPreciseFPMADOption on the TargetOption as it's.
Remove setting LessPreciseFPMADOption on the TargetOption as it's
Thu, Mar 16, 5:50 PM
echristo requested changes to D30415: Fix -mno-altivec cannot overwrite -maltivec option.

Different suggestion:

Thu, Mar 16, 4:45 PM
echristo requested changes to D28893: Non-virtual subtarget features functions.

(Otherwise I think I'm fine with the patch, just need to do that.)

Thu, Mar 16, 4:31 PM
echristo requested changes to D29407: AsmPrinter: Emit debug information sections lasst.
Thu, Mar 16, 4:30 PM
echristo added a comment to D28893: Non-virtual subtarget features functions.

Can you resend this and add llvm-commits on the initial send out so mail will go to the list as well?

Thu, Mar 16, 4:30 PM
echristo accepted D28494: Make `@llvm.objectsize` more conservative with null pointers..

This is OK with me.

Thu, Mar 16, 4:28 PM
echristo added a comment to D30879: Distinguish between code pointer size and DataLayout::getPointerSize() in DWARF info generation .

In general, I'd prefer not to use the TargetMachine for this. This is already the only point where we use the DataLayout in the TargetMachine and I'd much rather use the values in the module for getting pointer sizes.

Thu, Mar 16, 3:50 PM
echristo committed rL298006: Add a small test for __STRUCT_PARM_ALIGN__ for ppc64 darwin..
Add a small test for __STRUCT_PARM_ALIGN__ for ppc64 darwin.
Thu, Mar 16, 3:43 PM

Wed, Mar 15

echristo added a comment to D31013: CodeGen: BlockPlacement: Reduce TriangleChainCount to 2.

Could you make a test case? Could be an MIR test case if an IR case would be too fragile.

Wed, Mar 15, 8:04 PM
echristo committed rL297917: Fix up testcase to:.
Fix up testcase to:
Wed, Mar 15, 4:54 PM
echristo added a comment to D30728: CodeGen: Placement: Apply triangle heuristic more aggressively at O3..

Should the mips problem be fixed? I don't see a fundamental reason this needs to be opt level specific.

We looked into the mips issue. It is only a problem on mips2 and mips3, which are now 25 years old. The lowering for those targets could be better, but I'll file a bug and let it be.

The issue also goes away with branch coalescing if the mips branch targets are correctly marked as not clobbering the AT register.

Wed, Mar 15, 3:58 PM
echristo committed rL297898: Fix up grammar in a comment..
Fix up grammar in a comment.
Wed, Mar 15, 3:03 PM

Mon, Mar 13

echristo added a comment to D30670: [Outliner] Add tail call support.

The boolean parameter threaded through seems a bit unwieldy. Would it be better to either a) add a call that said e.g. TII.numInstrsForCallReturn(), or b) just assume 1?

Mon, Mar 13, 6:06 PM

Fri, Mar 10

echristo committed rL297507: Sink accessing TII to fix release Werror builds..
Sink accessing TII to fix release Werror builds.
Fri, Mar 10, 1:32 PM

Tue, Feb 28

echristo accepted D28249: Improve scheduling with branch coalescing.

Thanks! Now let's get some performance testing and go from there.

Tue, Feb 28, 1:33 PM
echristo accepted D30362: [PPC] Fix code generation for bswap(int32) followed by store16.

I think this is still outstanding, and unless I've missed something LGTM.

Tue, Feb 28, 1:24 PM
echristo committed rL296490: Migrate all of aarch64-linux-gnu to \01_mcount instead of just when passing….
Migrate all of aarch64-linux-gnu to \01_mcount instead of just when passing…
Tue, Feb 28, 9:34 AM

Feb 25 2017

echristo committed rL296277: vec perm can go down either pipeline on P8..
vec perm can go down either pipeline on P8.
Feb 25 2017, 4:23 PM

Feb 24 2017

echristo accepted D30338: [Doc] Modernize programmers manual.
Feb 24 2017, 8:47 PM
echristo added inline comments to D30266: Move Stream code from MSF -> Support.
Feb 24 2017, 11:25 AM
echristo accepted D30266: Move Stream code from MSF -> Support.

Couple of inline comments while I was reading through. Hope we can use this to clean up some of the reading/writing interfaces in future patches :)

Feb 24 2017, 11:11 AM

Feb 22 2017

echristo added a comment to D28249: Improve scheduling with branch coalescing.

Bunch of inline comments.

Feb 22 2017, 5:20 PM
echristo added a comment to D28249: Improve scheduling with branch coalescing.
In D28249#683815, @lei wrote:

You marked things done that aren't done. What's going on? :)

-eric

Someone told me no one looked at that so I was using it to mark what I have done in my version ... which is not uploaded yet :) Will stop doing that now that I know it is actually being noted on.

Feb 22 2017, 11:56 AM

Feb 21 2017

echristo added a comment to D28494: Make `@llvm.objectsize` more conservative with null pointers..

One inline request, otherwise I think this is ok. Not sure if we want to use an i2/i8 rather than a pair of i1, but either way.

Feb 21 2017, 11:36 AM
echristo added a comment to D28249: Improve scheduling with branch coalescing.

You marked things done that aren't done. What's going on? :)

Feb 21 2017, 11:32 AM
echristo added a comment to D28249: Improve scheduling with branch coalescing.

Because select gets converted to branches in PowerPC, I was wondering if there is a way to not generate selects in the first place.

It is not true in general that selects get converted to branches on PowerPC. For example, integer selects can be lowered into an actual "integer select" instruction under the "right" circumstances.
I'm sure there is a way to prevent the selects from being produced, but I am not sure this would have any effect on this optimization. For the specific test case that is added as part of this patch, it appears that SROA produces the selects. I haven't personally looked at the semantics of SROA and the heuristics it uses to produce a select or not, but there is presumably a way to tell it not to do so.

Feb 21 2017, 11:27 AM

Feb 17 2017

echristo added a comment to D29916: [CGP] Split some critical edges coming out of indirect branches.

I've verified that 2004-03-15-IndirectGoto.c really is the only place in the test-suite where this fires.

(To be clear - that should have been "Eric *also* saw this in the wild", the python issue is very much not synthetic.)

Feb 17 2017, 10:38 AM
echristo added a comment to D29765: Handle link of NoDebug CU with a CU that has debug emission enabled.

LGTM as well. Thanks for the thorough work here both of you. :)

Feb 17 2017, 10:36 AM

Feb 15 2017

echristo committed rL295156: Add a definition for __STRUCT_PARM_ALIGN__ for elfv2 and 64-bit darwin….
Add a definition for __STRUCT_PARM_ALIGN__ for elfv2 and 64-bit darwin…
Feb 15 2017, 12:01 AM

Feb 14 2017

echristo added a comment to D29765: Handle link of NoDebug CU with a CU that has debug emission enabled.

One drive by comment while I'm looking at it.

Feb 14 2017, 4:46 PM
echristo committed rL295096: Reformat slightly..
Reformat slightly.
Feb 14 2017, 11:55 AM
echristo added a comment to D27503: [XRay] Custom event logging intrinsic.

One inline nit, I'd like to take a closer look at this though. Can you give an example of use case and lowering?

Feb 14 2017, 10:26 AM

Feb 13 2017

echristo added a comment to D29770: [Assembler] Inline assembly diagnostics test..

Use clang_cc1 -verify for testing as suggested by @rnk.

@echristo, llc does use the same diags interfaces as clang, however, it is
lacking the infrastructure to make use of LocCookies.

In any case, I think this test is useful to prevent regressions in inline
assembly diagnostics in clang.

Feb 13 2017, 8:49 AM