oota-llvm.git
15 years agoShoot! Remove this debugging line again!
Nick Lewycky [Sun, 15 Feb 2009 22:50:17 +0000 (22:50 +0000)]
Shoot! Remove this debugging line again!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64617 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoDon't discard definitions of common symbols. Not sure if this is the right fix.
Nick Lewycky [Sun, 15 Feb 2009 22:49:17 +0000 (22:49 +0000)]
Don't discard definitions of common symbols. Not sure if this is the right fix.

Before this change, the program:
  int var;
  int main(void) { return 0; }
when run under 'nm -g' would show 'U var' with the gold plugin and
'B var' with gcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64616 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoUpdate the list of function annotations for nocapture. All of these came up
Nick Lewycky [Sun, 15 Feb 2009 22:47:25 +0000 (22:47 +0000)]
Update the list of function annotations for nocapture. All of these came up
when I was looking at functions used by python.

Highlights include, better largefile support (64-bit file sizes on 32-bit
systems), fputs string is nocapture, popen/pclose added (popen being noalias
return), modf and frexp and friends. Also added some missing 'break' statements
and combined identical sections.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64615 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoOn 64bit we may have a personality function which requires 64 bits to
Nicolas Geoffray [Sun, 15 Feb 2009 20:49:23 +0000 (20:49 +0000)]
On 64bit we may have a personality function which requires 64 bits to
be encoded.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64600 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoMake this more useful for cleaning up after the
Duncan Sands [Sun, 15 Feb 2009 11:54:49 +0000 (11:54 +0000)]
Make this more useful for cleaning up after the
one-definition-rule llvm-gcc changes (coming soon
to a tree near you!).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64588 91177308-0d34-0410-b5e6-96231b3b80d8

15 years ago80-column violation.
Mikhail Glushenkov [Sun, 15 Feb 2009 11:32:31 +0000 (11:32 +0000)]
80-column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64586 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoIf the target of an alias has internal linkage, then the
Duncan Sands [Sun, 15 Feb 2009 09:56:08 +0000 (09:56 +0000)]
If the target of an alias has internal linkage, then the
alias can be morphed into the target.  Implement this
transform, and fix a crash in the existing transform at
the same time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64583 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix PR3522. It's not safe to sink into landing pad BB's.
Evan Cheng [Sun, 15 Feb 2009 08:36:12 +0000 (08:36 +0000)]
Fix PR3522. It's not safe to sink into landing pad BB's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64582 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix pr3571: If stride is a value defined by an instruction, make sure it dominates...
Evan Cheng [Sun, 15 Feb 2009 06:06:15 +0000 (06:06 +0000)]
Fix pr3571: If stride is a value defined by an instruction, make sure it dominates the loop preheader. When IV users are strength reduced, the stride is inserted into the preheader. It could create a use before def situation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64579 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoifdef out unneeded if statement.
Evan Cheng [Sun, 15 Feb 2009 03:20:37 +0000 (03:20 +0000)]
ifdef out unneeded if statement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64575 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix warning on gcc 4.3.
Mikhail Glushenkov [Sun, 15 Feb 2009 03:20:32 +0000 (03:20 +0000)]
Fix warning on gcc 4.3.

"system() declared with attribute warn_unused_result."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64574 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoWhitespace fixes.
Mikhail Glushenkov [Sun, 15 Feb 2009 03:20:03 +0000 (03:20 +0000)]
Whitespace fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64573 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd mode_t to the config.h generated by cmake on win32. Used by clang.
Cedric Venet [Sat, 14 Feb 2009 16:13:26 +0000 (16:13 +0000)]
Add mode_t to the config.h generated by cmake on win32. Used by clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64555 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoUnbreak the build on win32.
Cedric Venet [Sat, 14 Feb 2009 16:06:42 +0000 (16:06 +0000)]
Unbreak the build on win32.
Cleanup some warning.

Remark: when struct/class are declared differently than they are defined, this make problem for VC++ since it seems to mangle class differently that struct. These error are very hard to understand and find. So please, try to keep your definition/declaration in sync.

Only tested with VS2008. hope it does not break anything. feel free to revert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64554 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoGeneralize some alias analysis logic from atomic
Duncan Sands [Sat, 14 Feb 2009 10:56:35 +0000 (10:56 +0000)]
Generalize some alias analysis logic from atomic
intrinsics to any IntrWriteArgMem intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64551 91177308-0d34-0410-b5e6-96231b3b80d8

15 years ago80-column violation.
Mikhail Glushenkov [Sat, 14 Feb 2009 08:41:25 +0000 (08:41 +0000)]
80-column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64550 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoThe trampoline intrinsic can be marked IntrWriteArgMem,
Duncan Sands [Sat, 14 Feb 2009 05:33:26 +0000 (05:33 +0000)]
The trampoline intrinsic can be marked IntrWriteArgMem,
now that this no longer implies nocapture.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64540 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoIntrWriteArgMem implies nocapture, but this wasn't
Duncan Sands [Sat, 14 Feb 2009 05:16:25 +0000 (05:16 +0000)]
IntrWriteArgMem implies nocapture, but this wasn't
taken advantage of anywhere.  Change the definition
of IntrWriteArgMem to no longer imply nocapture, and
explicitly add nocapture attributes everywhere (well,
not quite everywhere, because some of these intrinsics
did capture their arguments!).  Also, make clear that
the lack of other side-effects does not exclude doing
volatile loads or stores - the atomic intrinsics do
these, yet they are all marked IntrWriteArgMem (this
change is safe because nothing exploited it).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64539 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoThe x86-64 red zone is now being used.
Dan Gohman [Sat, 14 Feb 2009 03:30:05 +0000 (03:30 +0000)]
The x86-64 red zone is now being used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64535 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoExtend the IndVarSimplify support for promoting induction variables:
Dan Gohman [Sat, 14 Feb 2009 02:31:09 +0000 (02:31 +0000)]
Extend the IndVarSimplify support for promoting induction variables:
 - Test for signed and unsigned wrapping conditions, instead of just
   testing for non-negative induction ranges.
 - Handle loops with GT comparisons, in addition to LT comparisons.
 - Support more cases of induction variables that don't start at 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64532 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoClarify debug output.
Dan Gohman [Sat, 14 Feb 2009 02:26:50 +0000 (02:26 +0000)]
Clarify debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64531 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoSimplify some code. hasComputableLoopEvolution is overkill in this case.
Dan Gohman [Sat, 14 Feb 2009 02:25:19 +0000 (02:25 +0000)]
Simplify some code. hasComputableLoopEvolution is overkill in this case.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64530 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoTestcase for llvm-gcc 64510.
Dale Johannesen [Sat, 14 Feb 2009 00:19:28 +0000 (00:19 +0000)]
Testcase for llvm-gcc 64510.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64511 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoTeach x86 target -soft-float.
Evan Cheng [Fri, 13 Feb 2009 22:36:38 +0000 (22:36 +0000)]
Teach x86 target -soft-float.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64496 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoIn CodeGenPrepare's debug output, use WriteAsOperand instead of
Dan Gohman [Fri, 13 Feb 2009 17:45:12 +0000 (17:45 +0000)]
In CodeGenPrepare's debug output, use WriteAsOperand instead of
printing getName(), so that unnamed values are printed correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64468 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoComplete the sentance in this comment. I have reservations
Dan Gohman [Fri, 13 Feb 2009 17:36:42 +0000 (17:36 +0000)]
Complete the sentance in this comment. I have reservations
about the code it describes, but at least now the comment
is right.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64465 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoCorrect a comment: since AccessArguments is now
Duncan Sands [Fri, 13 Feb 2009 17:36:13 +0000 (17:36 +0000)]
Correct a comment: since AccessArguments is now
being used for atomic intrinsics, it seems the
access may be volatile.  No code was exploiting
the original non-volatile definition, so only
the comment needs changing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64464 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoIf a function only reads memory, then we know that...
Duncan Sands [Fri, 13 Feb 2009 17:32:26 +0000 (17:32 +0000)]
If a function only reads memory, then we know that...
it only reads memory!  The other change has no
functional effect, it just seems more logical to
go in order of decreasing knowledge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64463 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoMark strto* as readonly when the endptr is null.
Nick Lewycky [Fri, 13 Feb 2009 17:08:33 +0000 (17:08 +0000)]
Mark strto* as readonly when the endptr is null.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64460 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoOn strtod and friends, mark 'endptr' nocapture in the function prototype, and
Nick Lewycky [Fri, 13 Feb 2009 15:31:46 +0000 (15:31 +0000)]
On strtod and friends, mark 'endptr' nocapture in the function prototype, and
mark the first argument nocapture if endptr=NULL for each particular call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64453 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoReapply r64301. These uses of "inline" can cause strange
Duncan Sands [Fri, 13 Feb 2009 09:42:34 +0000 (09:42 +0000)]
Reapply r64301.  These uses of "inline" can cause strange
link-time failures when building with optimization.  Just
get rid of them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64449 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoSwitch from new[] + delete[] to malloc + free since llvm does not catch C++ exceptions.
Evan Cheng [Fri, 13 Feb 2009 08:24:55 +0000 (08:24 +0000)]
Switch from new[] + delete[] to malloc + free since llvm does not catch C++ exceptions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64448 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoIf new[] fails, return 0 rather then trying to dereference a null pointer.
Evan Cheng [Fri, 13 Feb 2009 07:54:34 +0000 (07:54 +0000)]
If new[] fails, return 0 rather then trying to dereference a null pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64444 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoReapply r64300:
Nick Lewycky [Fri, 13 Feb 2009 07:15:53 +0000 (07:15 +0000)]
Reapply r64300:

Make sure the SCC pass manager initializes any contained
function pass managers.  Without this, simplify-libcalls
would add nocapture attributes when run on its own, but
not when run as part of -std-compile-opts or similar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64443 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoBasicAA was making the assumption that a local allocation which hadn't escaped
Nick Lewycky [Fri, 13 Feb 2009 07:06:27 +0000 (07:06 +0000)]
BasicAA was making the assumption that a local allocation which hadn't escaped
couldn't ever be the return of call instruction. However, it's quite possible
that said local allocation is itself the return of a function call. That's
what malloc and calloc are for, actually.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64442 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix the code that checked if a SCEVAddRecExpr Start contains an
Dan Gohman [Fri, 13 Feb 2009 03:58:31 +0000 (03:58 +0000)]
Fix the code that checked if a SCEVAddRecExpr Start contains an
addrec in a different loop to check the value being added to
the accumulated Start value, not the Start value before it has
the new value added to it. This prevents LSR from going crazy
on the included testcase. Dale, please review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64440 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove non-DebugLoc versions of BuildMI.
Dale Johannesen [Fri, 13 Feb 2009 02:35:20 +0000 (02:35 +0000)]
Remove non-DebugLoc versions of BuildMI.
"I got blisters on my fingers."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64439 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove non-DebugLoc versions of BuildMI from IA64, Mips.
Dale Johannesen [Fri, 13 Feb 2009 02:34:39 +0000 (02:34 +0000)]
Remove non-DebugLoc versions of BuildMI from IA64, Mips.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64438 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove non-DebugLoc versions of BuildMI from X86.
Dale Johannesen [Fri, 13 Feb 2009 02:33:27 +0000 (02:33 +0000)]
Remove non-DebugLoc versions of BuildMI from X86.
There were some that might even matter in X86FastISel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64437 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agomissed file
Dale Johannesen [Fri, 13 Feb 2009 02:32:04 +0000 (02:32 +0000)]
missed file

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64436 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove non-DebugLoc versions of buildMI from Sparc.
Dale Johannesen [Fri, 13 Feb 2009 02:31:35 +0000 (02:31 +0000)]
Remove non-DebugLoc versions of buildMI from Sparc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64435 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove non-DebugLoc versions of BuildMI from Alpha and Cell.
Dale Johannesen [Fri, 13 Feb 2009 02:30:42 +0000 (02:30 +0000)]
Remove non-DebugLoc versions of BuildMI from Alpha and Cell.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64433 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove refs to non-DebugLoc version of BuildMI from XCore, PIC16.
Dale Johannesen [Fri, 13 Feb 2009 02:29:03 +0000 (02:29 +0000)]
Remove refs to non-DebugLoc version of BuildMI from XCore, PIC16.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64432 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove refs to non-DebugLoc version of BuildMI from PowerPC.
Dale Johannesen [Fri, 13 Feb 2009 02:27:39 +0000 (02:27 +0000)]
Remove refs to non-DebugLoc version of BuildMI from PowerPC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64431 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoand one more file
Dale Johannesen [Fri, 13 Feb 2009 02:26:21 +0000 (02:26 +0000)]
and one more file

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64430 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove refs to non-DebugLoc versions of BuildMI from ARM.
Dale Johannesen [Fri, 13 Feb 2009 02:25:56 +0000 (02:25 +0000)]
Remove refs to non-DebugLoc versions of BuildMI from ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64429 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRevert this. It was breaking stuff.
Bill Wendling [Fri, 13 Feb 2009 02:16:35 +0000 (02:16 +0000)]
Revert this. It was breaking stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64428 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoTurn off the old way of handling debug information in the code generator. Use
Bill Wendling [Fri, 13 Feb 2009 02:01:04 +0000 (02:01 +0000)]
Turn off the old way of handling debug information in the code generator. Use
the new way, where all of the information is passed on SDNodes and machine
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64427 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix LSR's IV sorting function to explicitly sort by bitwidth
Dan Gohman [Fri, 13 Feb 2009 00:26:43 +0000 (00:26 +0000)]
Fix LSR's IV sorting function to explicitly sort by bitwidth
after sorting by stride value. This prevents it from missing
IV reuse opportunities in a host-sensitive manner.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64415 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAvoid order files for now, as they aren't supported in 3.79.
Mike Stump [Thu, 12 Feb 2009 23:45:11 +0000 (23:45 +0000)]
Avoid order files for now, as they aren't supported in 3.79.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64412 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoCheck in missing file.
Dale Johannesen [Thu, 12 Feb 2009 23:24:44 +0000 (23:24 +0000)]
Check in missing file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64410 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoEliminate a couple of non-DebugLoc BuildMI variants.
Dale Johannesen [Thu, 12 Feb 2009 23:08:38 +0000 (23:08 +0000)]
Eliminate a couple of non-DebugLoc BuildMI variants.
Modify callers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64409 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoTeach IndVarSimplify to optimize code using the C "int" type for
Dan Gohman [Thu, 12 Feb 2009 22:19:27 +0000 (22:19 +0000)]
Teach IndVarSimplify to optimize code using the C "int" type for
loop induction on LP64 targets. When the induction variable is
used in addressing, IndVars now is usually able to inserst a
64-bit induction variable and eliminates the sign-extending cast.
This is also useful for code using C "short" types for
induction variables on targets with 32-bit addressing.

Inserting a wider induction variable is easy; the tricky part is
determining when trunc(sext(i)) expressions are no-ops. This
requires range analysis of the loop trip count. A common case is
when the original loop iteration starts at 0 and exits when the
induction variable is signed-less-than a fixed value; this case
is now handled.

This replaces IndVarSimplify's OptimizeCanonicalIVType. It was
doing the same optimization, but it was limited to loops with
constant trip counts, because it was running after the loop
rewrite, and the information about the original induction
variable is lost by that point.

Rename ScalarEvolution's executesAtLeastOnce to
isLoopGuardedByCond, generalize it to be able to test for
ICMP_NE conditions, and move it to be a public function so that
IndVars can use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64407 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd suppport for ConstantExprs of shufflevectors whose result type is not equal to the
Nate Begeman [Thu, 12 Feb 2009 21:28:33 +0000 (21:28 +0000)]
Add suppport for ConstantExprs of shufflevectors whose result type is not equal to the
type of the vectors being shuffled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64401 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoArrange to print constants that match "n" and "i" constraints
Dale Johannesen [Thu, 12 Feb 2009 20:58:09 +0000 (20:58 +0000)]
Arrange to print constants that match "n" and "i" constraints
in inline asm as signed (what gcc does).  Add partial support
for x86-specific "e" and "Z" constraints, with appropriate
signedness for printing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64400 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRename bugpoint's error message file so that if it somehow
Dan Gohman [Thu, 12 Feb 2009 20:53:27 +0000 (20:53 +0000)]
Rename bugpoint's error message file so that if it somehow
gets left behind, it's less cryptic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64399 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd a utility function to LoopInfo to return the exit block
Dan Gohman [Thu, 12 Feb 2009 18:08:24 +0000 (18:08 +0000)]
Add a utility function to LoopInfo to return the exit block
when the loop has exactly one exit, and make use of it in
LoopIndexSplit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64388 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agofix PR3538 for ARM.
Chris Lattner [Thu, 12 Feb 2009 17:38:23 +0000 (17:38 +0000)]
fix PR3538 for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64384 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agofix PR3538 for PPC
Chris Lattner [Thu, 12 Feb 2009 17:37:15 +0000 (17:37 +0000)]
fix PR3538 for PPC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64383 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agofix the X86 backend to just drop llvm.declare nodes for VLAs instead of
Chris Lattner [Thu, 12 Feb 2009 17:33:11 +0000 (17:33 +0000)]
fix the X86 backend to just drop llvm.declare nodes for VLAs instead of
leaving them in the DAG and then getting selection errors.  This is a
fix for PR3538.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64382 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdjust the sizes for a few SmallVectors to reflect their usage.
Dan Gohman [Thu, 12 Feb 2009 17:29:01 +0000 (17:29 +0000)]
Adjust the sizes for a few SmallVectors to reflect their usage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64381 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agomake fast isel fall back to selectiondags for VLA llvm.declare intrinsics.
Chris Lattner [Thu, 12 Feb 2009 17:23:20 +0000 (17:23 +0000)]
make fast isel fall back to selectiondags for VLA llvm.declare intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64379 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd operator->, patch by Ben Laurie!
Chris Lattner [Thu, 12 Feb 2009 17:14:49 +0000 (17:14 +0000)]
Add operator->, patch by Ben Laurie!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64378 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoadd PR
Chris Lattner [Thu, 12 Feb 2009 17:04:57 +0000 (17:04 +0000)]
add PR

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64377 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoThis code doesn't actually use the ExitingBlocks list.
Dan Gohman [Thu, 12 Feb 2009 16:36:26 +0000 (16:36 +0000)]
This code doesn't actually use the ExitingBlocks list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64376 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoIt's (currently) not safe to keep certain physical registers live across basic blocks...
Evan Cheng [Thu, 12 Feb 2009 10:32:17 +0000 (10:32 +0000)]
It's (currently) not safe to keep certain physical registers live across basic blocks, e.g. x86 fp stack registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64374 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoOops. Last second clean up messed things up.
Evan Cheng [Thu, 12 Feb 2009 09:52:13 +0000 (09:52 +0000)]
Oops. Last second clean up messed things up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64373 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoIf availability info is kept when fallthrough into a bb, add the available registers...
Evan Cheng [Thu, 12 Feb 2009 09:43:23 +0000 (09:43 +0000)]
If availability info is kept when fallthrough into a bb, add the available registers to live-in set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64372 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoReplace one of burr scheduling heuristic with something more sensible. Now calcMaxScr...
Evan Cheng [Thu, 12 Feb 2009 08:59:45 +0000 (08:59 +0000)]
Replace one of burr scheduling heuristic with something more sensible. Now calcMaxScratches simply compute the number of true data dependencies. This actually improve a couple of tests in dejagnu suite as many tests in llvm nightly test suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64369 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix MingW build: define GTEST_OS_WINDOWS if OS is MingW, but disable
Julien Lerouge [Thu, 12 Feb 2009 08:02:35 +0000 (08:02 +0000)]
Fix MingW build: define GTEST_OS_WINDOWS if OS is MingW, but disable
exceptions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64367 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix MingW build, patch by Kenneth Boyd!
Julien Lerouge [Thu, 12 Feb 2009 07:39:10 +0000 (07:39 +0000)]
Fix MingW build, patch by Kenneth Boyd!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64366 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix a nasty bug (PR3550) where the inline pass could incorrectly mark
Chris Lattner [Thu, 12 Feb 2009 07:06:42 +0000 (07:06 +0000)]
Fix a nasty bug (PR3550) where the inline pass could incorrectly mark
calls with the tail marker when inlining them through an invoke.  Patch,
testcase, and perfect analysis by Jay Foad!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64364 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoimprove naming of values in GVN, patch by Jay Foad!
Chris Lattner [Thu, 12 Feb 2009 07:00:35 +0000 (07:00 +0000)]
improve naming of values in GVN, patch by Jay Foad!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64363 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agofix PR3537: if resetting bbi back to the start of a block, we need to
Chris Lattner [Thu, 12 Feb 2009 06:56:08 +0000 (06:56 +0000)]
fix PR3537: if resetting bbi back to the start of a block, we need to
forget about already inserted expressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64362 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agorename test to avoid messing with tab completion of dates.
Chris Lattner [Thu, 12 Feb 2009 06:54:55 +0000 (06:54 +0000)]
rename test to avoid messing with tab completion of dates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64361 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd method 'isSingleton()' to ImmutableSet. This returns true if the set contains...
Ted Kremenek [Thu, 12 Feb 2009 05:17:02 +0000 (05:17 +0000)]
Add method 'isSingleton()' to ImmutableSet.  This returns true if the set contains exactly one element.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64359 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoDon't mark all args to strtod and friends as nocapture.
Nick Lewycky [Thu, 12 Feb 2009 03:18:34 +0000 (03:18 +0000)]
Don't mark all args to strtod and friends as nocapture.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64352 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoMove debug loc info along when the spiller creates new instructions.
Bill Wendling [Thu, 12 Feb 2009 00:02:55 +0000 (00:02 +0000)]
Move debug loc info along when the spiller creates new instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64342 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoApparently some MachineBasicBlock's don't have corresponding llvm basic blocks.
Evan Cheng [Wed, 11 Feb 2009 23:42:39 +0000 (23:42 +0000)]
Apparently some MachineBasicBlock's don't have corresponding llvm basic blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64340 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRemove a bogus assertion. It's possible a live-in available value is used by a previo...
Evan Cheng [Wed, 11 Feb 2009 23:41:57 +0000 (23:41 +0000)]
Remove a bogus assertion. It's possible a live-in available value is used by a previous instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64339 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agothe two non-mask arguments to a shufflevector must be the same width, but they do...
Nate Begeman [Wed, 11 Feb 2009 22:36:25 +0000 (22:36 +0000)]
the two non-mask arguments to a shufflevector must be the same width, but they do not have to be the same
width as the result value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64335 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoEdit description of floating point constants to
Dale Johannesen [Wed, 11 Feb 2009 22:14:51 +0000 (22:14 +0000)]
Edit description of floating point constants to
reflect reality.  Acknowledgements to John Clements
for prodding me into this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64332 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFill in a glaring omission in derived User classes, namely
Gabor Greif [Wed, 11 Feb 2009 22:09:00 +0000 (22:09 +0000)]
Fill in a glaring omission in derived User classes, namely
add efficient versions of op_begin and op_end. Up to now always those from User have been
called, which in most cases follow an indirection (OperandList) even if the exact Instruction
type is known.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64331 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoPropagate DebugLoc info for spiller call-backs.
Bill Wendling [Wed, 11 Feb 2009 21:51:19 +0000 (21:51 +0000)]
Propagate DebugLoc info for spiller call-backs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64329 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoFix a comment.
Dan Gohman [Wed, 11 Feb 2009 21:32:08 +0000 (21:32 +0000)]
Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64328 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoDon't use special heuristics for nodes with no data predecessors
Dan Gohman [Wed, 11 Feb 2009 21:29:39 +0000 (21:29 +0000)]
Don't use special heuristics for nodes with no data predecessors
unless they actually have data successors, and likewise for nodes
with no data successors unless they actually have data precessors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64327 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoAdd FoldingSet profile method for bools. Patch by Ben Laurie!
Ted Kremenek [Wed, 11 Feb 2009 20:53:17 +0000 (20:53 +0000)]
Add FoldingSet profile method for bools.  Patch by Ben Laurie!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64324 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoUpdate to match space changes in .ll
Daniel Dunbar [Wed, 11 Feb 2009 20:48:21 +0000 (20:48 +0000)]
Update to match space changes in .ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64322 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoDelete the heuristic for non-livein CopyFromReg nodes. Non-liveinness
Dan Gohman [Wed, 11 Feb 2009 20:25:59 +0000 (20:25 +0000)]
Delete the heuristic for non-livein CopyFromReg nodes. Non-liveinness
is determined by whether the node has a Flag operand. However, if the
node does have a Flag operand, it will be glued to its register's
def, so the heuristic would end up spuriously applying to whatever
node is the def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64319 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoDon't try to set an EFLAGS operand to dead if no instruction was created.
Dan Gohman [Wed, 11 Feb 2009 19:50:24 +0000 (19:50 +0000)]
Don't try to set an EFLAGS operand to dead if no instruction was created.
This fixes a bug introduced by r61215.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64316 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoMake a transformation added in 63266 a bit less aggressive.
Dale Johannesen [Wed, 11 Feb 2009 19:19:41 +0000 (19:19 +0000)]
Make a transformation added in 63266 a bit less aggressive.
It was transforming (x&y)==y to (x&y)!=0 in the case where
y is variable and known to have at most one bit set (e.g. z&1).
This is not correct; the expressions are not equivalent when y==0.
I believe this patch salvages what can be salvaged, including
all the cases in bt.ll.  Dan, please review.
Fixes gcc.c-torture/execute/20040709-[12].c

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64314 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRevert r64300 and r64301. These were causing the following errors respectively:
Bill Wendling [Wed, 11 Feb 2009 18:19:24 +0000 (18:19 +0000)]
Revert r64300 and r64301. These were causing the following errors respectively:

During llvm-gcc bootstrap:

Undefined symbols:
  "llvm::FPPassManager::doFinalization(llvm::Module&)", referenced from:
      (anonymous namespace)::CGPassManager::doFinalization(llvm::CallGraph&, llvm::Module&)
        in libLLVMipa.a(CallGraphSCCPass.o)
  "llvm::FPPassManager::doInitialization(llvm::Module&)", referenced from:
      (anonymous namespace)::CGPassManager::doInitialization(llvm::CallGraph&, llvm::Module&)
        in libLLVMipa.a(CallGraphSCCPass.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[3]: *** [/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/obj-llvm/Release/bin/opt] Error 1

During an LLVM release build:

/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-register-desc -o  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenRegisterInfo.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td
llvm[3]: Building X86.td instruction names with tblgen
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-instr-enums -o  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenInstrNames.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td
llvm[3]: Building X86.td instruction information with tblgen
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-instr-desc -o  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenInstrInfo.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td
llvm[3]: Building X86.td assembly writer with tblgen
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-asm-writer -o  /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenAsmWriter.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td
llvm[3]: Compiling InstructionCombining.cpp for Release build
if /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~dst/Developer/usr/bin/llvm-g++-4.2 -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Transforms/Scalar  -D_DEBUG  -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -O3  -fno-exceptions  -Woverloaded-virtual -pedantic -Wall -W -Wwrite-strings -Wno-long-long -Wunused -Wno-unused-parameter  -fstrict-aliasing -Wstrict-aliasing -c -MMD -MP -MF "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.d.tmp" -MT "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.lo" -MT "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.o" -MT "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.d" /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Transforms/Scalar/InstructionCombining.cpp -o /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.o ; \
           then /bin/mv -f "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.d.tmp" "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Trans

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64311 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoRevert r64299: it breaks the build when configured
Duncan Sands [Wed, 11 Feb 2009 13:23:49 +0000 (13:23 +0000)]
Revert r64299: it breaks the build when configured
without --enable-pic, like my nightly tester.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64302 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoThese uses of "inline" can cause strange link-time
Duncan Sands [Wed, 11 Feb 2009 12:25:15 +0000 (12:25 +0000)]
These uses of "inline" can cause strange link-time
failures when building with optimization.  Just get
rid of them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64301 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoMake sure the SCC pass manager initializes any contained
Duncan Sands [Wed, 11 Feb 2009 09:58:43 +0000 (09:58 +0000)]
Make sure the SCC pass manager initializes any contained
function pass managers.  Without this, simplify-libcalls
would add nocapture attributes when run on its own, but
not when run as part of -std-compile-opts or similar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64300 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoTry this. Darwin -> LTO, PIC -> LTO + possibly gold too.
Nick Lewycky [Wed, 11 Feb 2009 08:44:13 +0000 (08:44 +0000)]
Try this. Darwin -> LTO, PIC -> LTO + possibly gold too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64299 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoImplement PR3495: local spiller optimization. The local spiller can now keep availabi...
Evan Cheng [Wed, 11 Feb 2009 08:24:21 +0000 (08:24 +0000)]
Implement PR3495: local spiller optimization. The local spiller can now keep availability information over BB boundaries. It visits BB's in depth first order. After visiting a BB if it find a successor which has a single predecessor it visits the successor next without clearing the availability information. This allows the successor to omit reloads or change them into copies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64298 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoWhen scheduling a block in parts, keep track of the overall
Dan Gohman [Wed, 11 Feb 2009 04:27:20 +0000 (04:27 +0000)]
When scheduling a block in parts, keep track of the overall
instruction index across each part. Instruction indices are used
to make live range queries, and live ranges can extend beyond
scheduling region boundaries.

Refactor the ScheduleDAGSDNodes class some more so that it
doesn't have to worry about this additional information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64288 91177308-0d34-0410-b5e6-96231b3b80d8

15 years ago62987 disables LTO build on darwin.
Devang Patel [Wed, 11 Feb 2009 02:34:33 +0000 (02:34 +0000)]
62987 disables LTO build on darwin.
Revert 62987 for now. Nicolas please investigate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64285 91177308-0d34-0410-b5e6-96231b3b80d8

15 years agoIf llvm.dbg.region.end is disappearing then remove corresponding llvm.dbg.func.start...
Devang Patel [Wed, 11 Feb 2009 01:29:06 +0000 (01:29 +0000)]
If llvm.dbg.region.end is disappearing then remove corresponding llvm.dbg.func.start also.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64278 91177308-0d34-0410-b5e6-96231b3b80d8